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

제너레이터
제너레이터로 데이터 보내기

목표

데이터를 생성기에 보내어 물레를 사용하여 양모를 모으고 실로 자읍니다.

양들 중 일부는 털이 너무 많이 자랐습니다. 그들을 깎아 양모를 모으는 것이 좋습니다. 그런 다음 그 양모를 물레에 넣어 실을 생산할 수 있습니다. 이를 위해서는 실과 양모의 양이 크게 달라질 수 있으므로 생성기를 사용해야 합니다.

먼저 실을 자을 수 있는 생성기를 정의하고 spin()이라고 이름 지으십시오. 이 생성기는 작동하기 위해 외부 입력을 사용하도록 설정되어야 합니다. yield에서 데이터를 읽어 변수에 저장한 다음, 각 사이클마다 길이를 늘림으로써 내용을 수정하여 결과를 생성합니다.

def spin(): cycle = 1 while True: cycle += 1 yarn = yield yarn = yarn * cycle yield player.speak("You've spun %d ft of yarn" % (yarn))

생성기이기 때문에 내부의 while() 문을 일시 중지하고 원하는 출력을 생성하도록 수정할 수 있습니다. 데이터 처리를 할 때 생성기의 본질은 이처럼 제어할 수 있는 수준이 있다는 것입니다. 생성기에 데이터를 삽입하려면 이를 정의하고 send() 함수를 사용하여 원하는 데이터를 전달합니다. 예를 들면 다음과 같습니다:

spindle = spin() # 생성기 인스턴스 생성 next(spindle) # 생성기를 한 단계 실행 spindle.send(6) # 데이터 생성기에 삽입 # 이 경우 숫자 6을 보내고 있습니다.

색상 양탄자들에 표시된 X 표시까지 걸어가서 양들을 마주 보십시오. 각 양에서 얼마나 많은 양모를 깎을 수 있는지 값을 가진 sheep이라는 이름의 사전 상수가 있습니다. speak() 함수를 사용하여 양털을 깎고 얼마나 모았는지 확인하려면 서 있는 양탄자의 색상과 함께 사용하십시오. 예를 들어: player.speak(sheep["green"]) .

총 네 (4) 개의 색상 양탄자가 있습니다: "green" , "red" , "blue""orange" . 양의 털을 깎은 후에는 물레가 있는 각 색상 양탄자 옆의 어두운 X 표시까지 걸어가십시오. send()를 사용하여 각 색상의 양에게서 깎은 양모 파운드 수를 생성기에 입력하십시오.

예를 들어, "green" 양탄자에서 양을 깎을 때 4 파운드의 양모를 깎았다면, 물레가 있는 "green" 양탄자로 가서 해당 데이터를 생성기에 전송합니다. 다음과 같이:

next(spindle) spindle.send(4)

색상 양탄자의 모든 네 (4) 개의 어두운 X 표시에서 이 작업을 수행하여 레벨을 완료하십시오.

코드북