매개변수에서 정보 추출

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 주어진 텍스트에서 숫자를 추출하고, 해당 숫자들의 평균을 계산한 다음, 결과를 소수점 두 자리로 반올림하는 방법을 배우게 됩니다. 이 프로젝트는 정규 표현식 (regular expressions) 을 사용하고, Python 에서 명령줄 인수를 처리하는 연습을 돕습니다.

👀 미리보기

$ python3 ~/project/find_num.py "a11 b3.14c15 16"
11.29
$ python3 ~/project/find_num.py "a 5 b 6 c7 dd8 9"
7.00
$ python3 ~/project/find_num.py "ad1dg6dgd9dg4qwe10"
6.00

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 주어진 텍스트에서 모든 숫자 (정수 및 부동 소수점 숫자 모두) 를 찾기 위해 정규 표현식을 사용하는 방법
  • 일치하는 숫자를 문자열에서 부동 소수점으로 변환하는 방법
  • 추출된 숫자들의 평균을 계산하는 방법
  • 평균 결과를 소수점 두 자리로 형식화하는 방법
  • Python 스크립트에서 명령줄 인수를 처리하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 주어진 텍스트에서 숫자를 추출할 수 있는 Python 스크립트를 작성할 수 있습니다.
  • 추출된 숫자들의 평균을 계산할 수 있습니다.
  • 평균 결과를 소수점 두 자리로 형식화할 수 있습니다.
  • 명령줄에서 스크립트를 실행하고 텍스트를 인수로 전달할 수 있습니다.

프로젝트 환경 설정

이 단계에서는 프로젝트 환경을 설정하고 필요한 파일을 만드는 방법을 배우게 됩니다.

  1. 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.
  2. /home/labex/project 디렉토리에 find_num.py라는 새 Python 파일을 생성합니다.
cd /home/labex/project
touch find_num.py
  1. 텍스트 편집기에서 find_num.py 파일을 엽니다.
✨ 솔루션 확인 및 연습

필요한 모듈 가져오기

이 단계에서는 프로젝트에 필요한 모듈을 가져오는 방법을 배우게 됩니다.

  1. find_num.py 파일의 시작 부분에 다음 코드를 추가합니다:
import re  ## 정규 표현식 모듈 가져오기
import sys  ## 명령줄 인수를 위한 sys 모듈 가져오기

이러한 모듈은 정규 표현식 작업 및 명령줄 인수를 처리하는 데 사용됩니다.

✨ 솔루션 확인 및 연습

평균 계산 함수 정의

이 단계에서는 주어진 텍스트에서 숫자의 평균을 계산하는 함수를 정의하는 방법을 배우게 됩니다.

  1. find_num.py 파일에 다음 함수를 추가합니다:
def calculate_average(text):
    ## 텍스트에서 모든 부동 소수점 및 정수를 찾기 위해 정규 표현식 패턴 사용
    numbers = re.findall(r"[-+]?\d*\.\d+|\d+", text)
    ## 일치하는 숫자를 문자열에서 부동 소수점으로 변환 (리스트 컴프리헨션 사용)
    numbers = [float(num) for num in numbers]
    ## 이러한 숫자의 평균 계산
    average = sum(numbers) / len(numbers)
    ## 평균을 소수점 두 자리로 형식 지정
    average_formatted = "{:.2f}".format(average)
    return average_formatted

이 함수는 텍스트를 입력으로 받아 정규 표현식을 사용하여 텍스트에서 모든 숫자 (정수 및 부동 소수점 숫자 모두) 를 추출하고, 이러한 숫자의 평균을 계산하며, 결과를 소수점 두 자리로 형식 지정합니다.

✨ 솔루션 확인 및 연습

주요 로직 구현

이 단계에서는 스크립트의 주요 로직을 구현하는 방법을 배우게 됩니다.

  1. find_num.py 파일에 다음 코드를 추가합니다:
if __name__ == "__main__":
    ## 명령줄 인수에서 분석할 텍스트 읽기 (첫 번째 인수, sys.argv[1])
    text = sys.argv[1]
    ## 제공된 텍스트로 calculate_average 함수 호출
    average = calculate_average(text)
    ## 계산된 평균을 소수점 두 자리로 출력
    print(average)

이 코드는 스크립트가 메인 프로그램으로 실행되는지 확인합니다 (if __name__ == "__main__":). 그렇다면 명령줄 인수에서 분석할 텍스트를 읽고 (첫 번째 인수, sys.argv[1]), 제공된 텍스트로 calculate_average 함수를 호출한 다음, 계산된 평균을 출력합니다.

✨ 솔루션 확인 및 연습

스크립트 테스트

이 단계에서는 제공된 예제를 사용하여 스크립트를 테스트하는 방법을 배우게 됩니다.

  1. find_num.py 파일을 저장합니다.
  2. 제공된 예제로 스크립트를 실행합니다:
python3 /home/labex/project/find_num.py "a11 b3.14c15 16"
python3 /home/labex/project/find_num.py "a 5 b 6 c7 dd8 9"
python3 /home/labex/project/find_num.py "ad1dg6dgd9dg4qwe10"

출력은 예상 결과와 일치해야 합니다:

11.29
7.00
6.00

축하합니다! 프로젝트를 완료했습니다. 여러분이 만든 스크립트는 이제 주어진 텍스트에서 숫자를 추출하고, 평균을 계산하며, 결과를 소수점 두 자리로 반올림할 수 있습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.