Поглиблений курс розробки на 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).