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

수학 모듈
연산자 모듈

목표

연산자 모듈을 사용하여 새로운 농지 건설 자재 주문을 확인하고 할당합니다.

부속 건물의 위층에는 신규 토지 개발에 필요한 건설 자재의 주문과 인벤토리 로그를 보관하는 사무실들이 있습니다. 수학 및 통계 모듈 외에도, 자재를 계산하고 확인할 때 사용할 수 있는 다양한 도구들이 있습니다. 그 중 하나가 바로 연산자 모듈(operator module)입니다.

이 모듈인 import operator 는 연산자 계산을 단순화하고 편리하게 함수로 포장할 수 있도록 도와줍니다. 이 함수들을 사용하면 최적화 뿐만 아니라 계산 결과를 저장할 객체를 생성할 필요 없이 값을 생산할 수 있습니다.

  • operators.eq(): 두 개의 인자를 받아, 인자들이 서로 동일한지 확인합니다.
  • operators.lt(): 두 개의 인자를 받아, 첫 번째 인자가 두 번째 인자보다 작은지 확인합니다.
  • operators.gt(): 두 개의 인자를 받아, 첫 번째 인자가 두 번째 인자보다 큰지 확인합니다.
  • operators.floordiv(): 두 개의 인자를 받아, 첫 번째 인자를 두 번째 인자로 나누고 math.floor()와 동일하게 결과를 내림합니다.
  • operators.mod(): 두 개의 인자를 받아, 두 인자 간의 나눗셈의 나머지를 반환합니다.
  • operators.contains(): 리스트와 함께 사용되는 함수로, 두 개의 인자 중 첫 번째 인자는 리스트, 두 번째 인자는 리스트 안에 해당 값이 있는지 확인할 값입니다. 값이 존재하면 true, 존재하지 않으면 false를 반환합니다.
  • operators.concat(): 두 개의 리스트 인자를 받아, 단일 함수로 두 리스트를 결합합니다. 다른 방법보다 더 간결할 수 있습니다.
  • operators.countOf(): 두 개의 인자를 받아, 리스트와 리스트 안에서 특정 값이 몇 번 나타나는지 확인합니다. 해당 값이 나타나는 횟수를 반환합니다.

우선, 빨간색, 파란색, 초록색 카펫 위에 있는 어두운 X 표시 쪽으로 걸어가세요. 여기에는 여섯(6)의 상수가 있습니다: 자재 주문을 나타내는 red_order, blue_order, green_order 와 건설에 필요한 자재의 요구량을 나타내는 red_req, blue_req, green_req 입니다.

빨간색 카펫 위의 어두운 X 표시 지점에서, read() 함수를 사용하여 필요한 자재의 요구량을 확인하세요. red_verification 이라는 변수를 생성하고 operator.eq() 함수를 사용하여 red_orderred_req 상수를 비교합니다. 아래와 같이 작성합니다: red_verification = operator.eq(red_order,red_req) . 미리 작성된 write() 함수를 사용하여 red_verification 값을 화면에 출력하세요.

파란색과 초록색 X 표시 지점에서는 동일한 과정을 반복합니다. read() 함수를 사용하여 각각 blue_verificationgreen_verification 변수를 생성합니다. 파란색 변수에는 operator.lt() 함수를 사용하여 blue_orderblue_req 상수를 비교하여 주문이 요구량보다 적은지 확인합니다. 초록색 변수에는 operator.gt() 함수를 사용하여 green_ordergreen_req 상수를 비교하여 주문이 요구량보다 많은지 확인합니다. 미리 작성된 write() 함수를 각각의 색상에 해당하는 검증 결과와 함께 사용하세요.

다음으로 밝은 X 표시가 있는 곳으로 걸어가서, 책상 위에서 read() 함수를 사용해 이미 발주되어 배송 중인 주문을 확인하세요. 주문서에는 두 개의 변수 상수 main_ordersub_order 뿐만 아니라 자재가 나누어져야 하는 섹션의 수가 기재되어 있습니다. 주문서를 확인한 후, allocations 라는 변수를 생성하고 operator.floordiv() 함수를 사용해 main_order 값을 주문서에 기재된 섹션 수로 나눕니다. 아래와 같이 작성합니다: allocations = operator.floordiv(main_order, -add sections-) . 이는 주문을 분할하고 결과를 내림 처리합니다. 미리 작성된 write() 함수를 사용하여 allocations 변수를 화면에 출력하세요.

황금색 X 표시 지점으로 걸어가서 remainder 라는 변수를 생성한 후, operator.mod() 함수를 사용하여 main_ordersub_order 상수의 합계에 대한 나머지를 계산하여 저장하세요. 책상 위에서 미리 작성된 write() 함수를 사용하여 remainder 변수의 결과를 기록하세요.

보라색 카펫 위의 어두운 X 표시 지점으로 이동하여, 이번에는 건설에 필요한 도구들의 배송이 이루어졌는지 확인합니다. 두 개의 리스트 상수인 delivery_1delivery_2 가 있으며, 첫 번째 배송에서 도구들이 배송되었는지 확인할 것입니다. tools 라는 변수를 생성하고 operator.contains() 함수의 결과를 저장하세요. 첫 번째 인자로 delivery_1 리스트를, 두 번째 인자로 문자열 "tools"를 전달합니다. 아래와 같이 작성합니다: tools = operator.contains(delivery_1,"tools") . 완료되면 책상 위에서 미리 작성된 write() 함수를 사용하여 tools 변수의 결과를 기록하세요.

다음은 모든 배송을 확인하는 것입니다. 흰색 카펫 위의 어두운 X 표시 지점으로 이동하여 materials 라는 리스트를 생성하세요. 이 리스트에 operator.concat() 함수의 결과를 저장하는데, 인자로 delivery_1delivery_2 리스트를 전달합니다. 이 함수는 두 리스트를 하나의 리스트로 신속하게 병합합니다. 책상 위에서 미리 작성된 write() 함수를 사용하여 materials 변수의 결과를 기록하세요.

마지막으로 주황색 카펫 위의 어두운 X 표시 지점으로 걸어가세요. 여기에는 건설을 시작하기 위한 전제 조건들이 적혀 있으며, 그 중 하나는 초기에 필요한 목재의 중량(톤)입니다. 전체 배송에서 얼마만큼의 목재가 배송되었는지 확인하여 발표하세요. speak() 함수를 사용하여 operator.countOf() 함수를 호출합니다. 첫 번째 인자로 앞서 생성한 materials 리스트를, 두 번째 인자로 문자열 "wood"를 전달합니다. 이는 materials 리스트에 목재가 몇 번 나타나는지 반환할 것입니다. 다음과 같이 작성합니다: player.speak(operator.countOf(materials,"wood")) . 이것으로 레벨이 완료됩니다.

코드북