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

고급 함수
클로저

목표

클로저를 설정하고 사용하여 농장의 물 공급을 조절하세요.

농지 주변을 관개하기 위해 설계된 네 개의 물탱크가 있으며, 올바른 양의 물이 올바른 곳에 분배되고 있는지 확인하기 위해 전환할 때입니다. 이를 위해 클로저(Closures)를 사용하면 작업이 훨씬 수월해집니다.

클로저는 데이터를 캡슐화하기 위해 설계된 중첩 함수로, 사용해야 할 변수의 수를 줄이고 데이터를 함수 내부에 숨겨 외부에서 조작할 수 없도록 만듭니다. 즉, 함수를 닫는 효과를 줍니다.

물탱크의 물을 조절하기 위해, 우리는 곱셈 기능을 하는 중첩 함수를 만들 것입니다. 이 함수는 루프와 유사하게 작동하는데, 외부 함수인 multiplier_of()의 인수가 내부 함수인 multiplier()의 인수와 곱해집니다.

# Nested Function def multiplier_of(n): def multiplier(number): return number*n return multiplier

설정이 끝나면 클로저로 함수를 감싸, 값에 대한 접근을 차단하고 사용을 고정시킵니다.

# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]

위 클로저는 multiply_by_2()로 명명되며, 미리 정해진 인수인 2로 생성된 중첩 함수를 사용합니다. 그 결과, 어떤 숫자를 인수로 제공하더라도 두 배(2)로 곱해지며, 이 특성은 클로저 내부에 감싸져 있어 변경할 수 없습니다.

물탱크 조절로 넘어가, 세 개의 클로저인 multiply_by_2, multiply_by_3multiply_by_5를 설정하세요. 앞서 제공된 예와 동일한 형식을 사용하여 수동으로 각각 설정합니다. 예: multiply_by_2 = multiplier_of(2) .

이 레벨에는 tanks라는 딕셔너리 상수가 있으며, 이 인덱스는 여섯 가지 색상인 "red", "blue", "orange", "purple", "yellow""green"을 포함합니다. 각 인덱스는 탱크의 측면을 통과하는 물의 양을 나타내는 숫자를 보유하며, 이 숫자는 앞서 설명한 "multiply_by" 클로저를 사용해 탱크를 조절하는 데 사용됩니다.

이 작업을 위해 에디터에 regulate_water()라는 함수가 설정됩니다. 이 함수는 두 개의 인수를 취하는데, 첫 번째 인수는 위에서 설명한 색(인덱스)을, 두 번째 인수는 사용할 곱셈 클로저를 나타냅니다. 함수 사용 예시는 다음과 같습니다: regulate_water("red", multiply_by_2) .

어두운 X 표시 위에 있는 색깔 카펫으로 걸어가 탱크를 마주하고, regulate_water() 함수를 사용하여 첫 번째 인수로 카펫의 색상을, 두 번째 인수로 적절한 곱셈 클로저를 설정하세요. 각 색깔 카펫에 사용할 곱셈 클로저는 다음과 같습니다:

multiply_by_2 - "red" and "green" multiply_by_3 - "blue" and "purple" multiply_by_5 - "orange" and "yellow"

각 탱크의 측면에 흐르는 물을 조절하여 레벨을 완료하세요.

코드북