Coding for KidsCoding for Kids
Творческие УровниИспытанияРуководство для Учителей
Голосовать за функции
Продвинутый курс разработки на Python
Глава
>
Уровень

Генераторы
Отправка данных в генератор

Цель

Собрать шерсть и прясть её в пряжу, используя веретена, отправляя данные в генератор.

Некоторые овцы становятся слишком пушистыми, поэтому лучше их подстричь и собрать их шерсть. Затем вы можете пропустить шерсть через веретено, чтобы произвести пряжу. Для этого нам нужно будет использовать генератор, так как количество обрабатываемой шерсти и пряжи может значительно варьироваться.

Сначала определите генератор, способный прясть пряжу, назвав его 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 на цветных коврах, чтобы завершить уровень.

Книга Кода