Coding for KidsCoding for Kids
Креативни НиваПредизвикателстваРъководство за Учители
Гласувайте за функции
Курс по усъвършенствано разработване с Python
Глава
>
Ниво

Генератори
Ръчно напредване на генератор

Цел

Използвайте генератор в ръчна последователност, за да съберете и произведете материали за направата на хляб.

От предната страна има съоръжение, където можете да съберете тесто за хляб, използвайки пресите. Обикновено бихте използвали функцията 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).

Когато всички стойности бъдат въведени в генератора, влезте в съоръжението и използвайте player.place(next(recipe)) върху тъмните отметки X и player.collect(next(recipe)) върху светлите отметки X, за да завършите нивото.

Книга с Код