Coding for KidsCoding for Kids
창의적인 레벨도전 과제교사 가이드
기능 투표
고급 파이썬 개발 과정
챕터
>
레벨

수학 모듈
수학 모듈 소개

목표

농장의 토지 소유권 증서와 경계선을 확인하고, Math 모듈 함수를 사용하여 숫자를 검증하고 계산합니다.

본관 건물 가장자리에 위치한 사무실에는 건물의 옛 청사진과 토지 소유권 증서들이 보관된 기록 보관소가 있습니다. 농장을 동쪽으로 확장할 계획이 있지만, 건설 계획을 보기 전에 모든 서류 작업을 정리하는 것이 중요합니다. 이는 파이썬의 math 모듈을 사용하여 수행됩니다.

import math

앞서 사용한 statistics 모듈과 마찬가지로, math 모듈은 파이썬 내장 라이브러리를 확장할 수 있도록 다양한 수학 함수를 제공합니다:

  • math.isnan(): 입력된 값이 숫자가 아님을 확인합니다

  • math.isinf(): 입력된 값이 무한대인지 확인합니다

  • math.isfinite(): 입력된 값이 유한한지 확인합니다

  • math.prod(): 추가된 모든 인수를 곱합니다

  • math.pow(): 두 개의 인수를 받아 첫 번째 인수의 값을 두 번째 인수의 거듭제곱으로 반환합니다.

  • math.trunc(): 제공된 인수의 소수점을 제거하여 정수로 만듭니다. (반올림하지 않고 단순히 소수점을 제거합니다.)

  • math.copysign(): 두 개의 인수를 받아 두 번째 인수의 부호(-, +)를 첫 번째 인수에 적용합니다.

  • math.factorial(): 인수로 주어진 수부터 1까지 내림차순으로 모든 수를 곱한 결과를 반환합니다. 예를 들어, 값이 5일 경우 5 x 4 x 3 x 2 x 1의 결과를 생성합니다.

이 함수들을 사용하여 개발 프로젝트 준비를 위해 데이터를 검토하고 기록할 것입니다. 농지 도면을 담은 세 개의 상수 리스트는 각각 red_schematics, green_schematics, blue_schematics로 명명되어 있습니다. 이 도면들에는 숫자가 아니거나 사용할 수 없는 값들이 포함되어 있으므로, math 함수를 사용하여 요소들을 식별하고 사용 가능한 데이터를 찾아 기록해야 합니다.

먼저 빨간 카펫 위의 어두운 X 표시로 이동하여 red_schematics 리스트의 요소들을 반복문(loop)을 사용해 순회하면서 사용할 수 있는 요소들을 식별하세요.

for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)

이 반복문은 리스트의 모든 요소를 순회하며, math.isnan() 함수는 숫자가 아닌 항목을 식별하고, math.isinf() 함수는 데이터 수집 목적에 사용할 수 없는 무한 값을 식별합니다. math.isfinite()를 사용하여 원하지 않는 요소들을 필터링하는 리스트 내포(list comprehension)를 활용해 red_values라는 새 리스트를 생성하세요. 예: red_values = [x for x in red_schematics if math.isfinite(float(x))].

그 후, math.prod() 함수를 사용해 리스트 내의 모든 항목을 곱하여 숫자들을 모두 합산합니다. 예: red_values = math.prod(red_values).

녹색 및 파란 카펫 위의 어두운 X 표시에서도 동일한 필터링 과정을 수행하세요. green_schematicsblue_schematics 리스트 상수를 사용하고, 각각 green_valuesblue_values라는 리스트에 요소들을 통합하세요. 그 다음, 금색 X 표시로 이동하여 책상 앞에 서서 에디터에 미리 작성된 write() 함수를 사용해 사용 가능한 도면 데이터를 기록하세요. 모든 작업을 마치면 밝은 X 표시로 이동하여 open() 함수를 사용해 다음 방으로 들어가세요.

다음 방에는 몇 개의 책상 위에 토지 소유권 증서와 좌표가 있습니다. 다리 건너편의 다음 농장 영역으로 이동하기 전에 데이터를 기록하는 것이 좋습니다. 첫 번째 책상 옆 지도 상자 앞의 밝은 X 표시로 이동하여 read() 함수를 사용해 토지 소유권 증서의 인덱스 데이터를 획득하세요.

보라색 카펫 위의 어두운 X 표시로 이동하여 purple_data라는 변수를 생성한 후, 획득한 데이터를 곱하여 좌표 정보를 얻기 위해 math.pow() 함수를 사용하세요. 인덱스 데이터를 3의 거듭제곱으로 생성합니다. 예: purple_data = math.pow( -index data- , 3 ). 이전에 읽은 인덱스 데이터를 반드시 더해주어야 합니다. 이후 math.trunc()를 사용해 변수의 소수점 부분을 제거하세요. 예: purple_data = math.trunc(purple_data). 작업이 완료되면, X 표시에서 에디터에 미리 작성된 write() 함수를 사용하여 purple_data 변수에 저장된 데이터를 기록하세요.

마지막으로, 최상위 책상 옆 파일 캐비닛 앞의 밝은 X 표시로 이동하세요. 다시 한 번 read() 함수를 사용해 인덱스 데이터를 획득합니다. 이 데이터는 토지의 추가 좌표 정보를 드러내기 위해 해체되어야 합니다. 파일에서 찾은 데이터를 저장할 white_data 변수와 부호 값을 저장할 sign 변수를 생성하세요. 흰색 카펫 위의 어두운 X 표시로 이동하여, math.copysign() 함수를 사용해 이 두 변수를 인수로 제공하고 그 값을 white_data에 할당하세요. 예: white_data = math.copysign(white_data,sign).

작업이 완료되면, white_data를 사용하여 math.factorial() 함수를 호출합니다. 먼저 white_data를 정수로 변환한 후 해당 함수에 사용하세요. 예: white_data = math.factorial(int(white_data)). 미리 작성된 write() 함수를 사용해 white_data를 기록하면 레벨이 완료됩니다.

코드북