рдЙрдиреНрдирдд рдкрд╛рдпрдерди рд╡рд┐рдХрд╛рд╕ рдкрд╛рдареНрдпрдХреНрд░рдо
рд▓рдХреНрд╖реНрдп
рдКрди рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдХрд░ рдЙрд╕реЗ рдзрд╛рдЧреЗ рдореЗрдВ рд╕реНрдкрд┐рди рдХрд░реЗрдВред
рдХреБрдЫ рднреЗрдбрд╝реЗрдВ рдереЛрдбрд╝реА рдмрд╣реБрдд рдКрдиреА рд╣реЛ рдЧрдИ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрд╛рдЯрдХрд░ рдЙрдирдХреА рдКрди рдЬрдорд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд░рд╣реЗрдЧрд╛ред рдлрд┐рд░ рдЖрдк рдКрди рдХреЛ рд╕реНрдкрд┐рдВрдбрд▓ рд╕реЗ рдЧреБрдЬрд╛рд░рд╛ рдХрд░ рдзрд╛рдЧрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдзрд╛рдЧрд╛ рдФрд░ рдКрди рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рдлреА рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рдПрдХ рдРрд╕рд╛ рдЬрдирд░реЗрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдзрд╛рдЧрд╛ рд╕реНрдкрд┐рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо 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 рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВред