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

생성기
제너레이터 수동 전진

목표

손수레에서 시퀀스를 수동으로 사용하여 빵을 만들고 재료를 결합하세요.

앞으로 프레스를 사용하여 빵 반죽을 만들 수 있는 설비가 있습니다. 일반적으로 combine() 함수를 사용하여 재료를 결합하지만 여기에서 그렇게 하지 않으니 주의하세요. 재료가 결합되기 전에 먼저 정제되어야 합니다.

이번 작업에서는 다양한 파일 형식을 출력할 수 있고, 함수나 반복문처럼 자동으로 출력되지 않고 명령할 때 호출할 수 있는 시퀀스를 갖춘 제너레이터를 사용할 수 있습니다. 다음은 예시입니다:

def bread(): yield 5 yield "grain"

위의 코드는 두 개의 yield 문을 가진 제너레이터를 가지고 있으며, 하나는 실수를, 다른 하나는 문자열을 생성합니다. next() 함수를 사용하여 원하는 때 제너레이터의 값을 생성할 수 있습니다. 다음과 같이:

recipe = bread() # 제너레이터 설정 player.place(next(recipe)) # 첫 번째 값 호출 player.collect(next(recipe)) # 두 번째 값 호출

위의 예에서는 제너레이터가 설정되고, next() 함수가 제너레이터와 함께 사용되어 첫 번째 yield 값을 place() 함수에서 사용하도록 호출합니다. 이후 두 번째 값도 호출되어 collect() 함수에서 사용됩니다. 이렇게 하면 여러 리스트나 변수를 사용하지 않고도 시퀀스에서 다양한 유형의 값을 쉽게 호출할 수 있습니다.

코드 에디터에 bread()라는 이름의 제너레이터가 정의되겠지만, 빵 반죽을 정제하기 위해 각 재료의 수량이 필요합니다. 이 수량은 설비 옆 표지판에 적혀 있습니다. 제너레이터를 사용하기 위해 이를 참조하여 설정하세요. 다음과 같이: recipe = bread()

먼저 우유 탱크 옆의 X 표시로 걸어가 collect() 함수를 사용하여 탱크에 남은 우유를 제너레이터 next() 함수로 수집하세요. 다음과 같이: player.collect(next(recipe)). 그런 다음 금색 X 표시가 있는 표지판으로 이동하여 speak() 함수를 사용하여 제너레이터가 빵을 생산하기 위해 필요한 수량을 얻고 이를 제너레이터에 입력하세요. 데이터는 "sign"라는 이름의 상수에 저장되어 있으며, 다음과 같이 호출할 수 있습니다: player.speak(sign).

모든 값을 제너레이터에 입력한 후에는 시설 내부로 들어가서, 어두운 X 표시에서는 player.place(next(recipe))를, 밝은 X 표시에서는 player.collect(next(recipe))를 사용하여 레벨을 완성하세요.

코드북