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

Продвинутые функции
Вложенные функции

Цель

Собрать, перераспределить и убрать ткань, произведённую машинами, с использованием вложенных функций.

Иногда вам может понадобиться разместить функции внутри других функций для расширения возможностей последней. Такие функции называются вложенными функциями или внутренними функциями, и они имеют различные применения: от создания простого повторно используемого кода внутри функции до защиты ваших функций от внешней модификации.

В мастерской находится несколько машин по производству ткани: у некоторых ткань готова для хранения, у других для её завершения требуется нить. Перед каждой машиной располагается либо ковер цвета "red" либо "green", что указывает на её предназначение. В редакторе кода будет написана функция, которая позволит нам управлять машиной и либо собирать, либо размещать материалы с машины.

def operate_machine(color): def collect_cloth(): # Collect Code player.speak("Cloth is ready for storage") def place_thread(): # Place Code player.speak("Machine needed more materials") if color == "green": collect_cloth() if color == "red": place_thread()

Функция называется operate_machine и принимает аргумент с именем color. В зависимости от того, какого цвета ковер находится перед машиной, передав в качестве аргумента либо "red", либо "green", можно изменить работу машины, что позволит вам либо разместить, либо собрать предметы.

Внутри функции вы найдете две вложенные функции, названные collect_cloth() и place_thread(), предназначенные для выполнения действий, указанных в их названиях. В них отсутствуют строки, необходимые для выполнения их действий: в collect_cloth() добавьте строку player.collect("cloth"), после которой идёт player.speak("Quilt is ready for storage"), а в place_thread() добавьте строку player.place("thread"), после которой идёт player.speak("Machine needed more materials").

После того как пропущенные строки кода будут добавлены во вложенные функции, пройдите к светлому X-отметке перед ящиком и соберите "thread" для использования в машине, как это: player.collect("thread").

Пройдите к тёмным X-отметкам внутри мастерской и используйте пользовательскую функцию operate_machine, поворачиваясь к машинам. Добавьте в качестве аргумента либо "red", либо "green" в зависимости от цвета ковра, на котором расположена X-отметка, например: operate_machine("red"). Это позволит вам разместить нить и собрать ткань.

После того как вы соберёте всю ткань, пройдите к золотой X-отметке рядом с ящиком в задней части и используйте функцию place(), чтобы сохранить ткань. Создайте переменную с именем cloths, присвойте ей количество собранной ткани и поместите её в ящик для завершения уровня, как это: player.place(cloths) .

Книга Кода