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 на кольорових килимках, щоб завершити рівень.

Книга Коду