Coding for KidsCoding for Kids
Креативні РівніВикликиПосібник для Вчителів
Голосувати за функції
Поглиблений курс розробки на Python
Розділ
>
Рівень

Декоратори
Оптимізація декораторів

Мета

Збирайте інгредієнти та готуйте різні види піци, використовуючи декоратори.

Тепер, коли печі налаштовано, настав час приготувати кілька піц, щоб потім їх запекти. Тепер, коли ми знаємо, як використовувати декоратори, можемо трохи їх оптимізувати. Використовуючи символ @ у коді, після якого вказується ім’я декоратора, і розміщуючи цей код над декорованою функцією, ми можемо автоматично застосувати декоратор без використання змінної. Наприклад:

# Decorator def create_pizza(func): def set(): pizza = ["dough","red sauce","cheese"] player.combine(pizza) func() return set # Function being decorated with @ @create_pizza def peperoni_pizza(): player.place("Peperoni") player.speak("Peperoni Pizza has been prepped") # Using pre-decorated function peperoni_pizza()

Слід зазначити, що ця техніка спрощує процес, оскільки функція попередньо декорована до використання, однак іноді ви можете захотіти призначити декоратор змінній для більшої гнучкості.

Для початку, пройдіть до золотого знаку X та візьміть інгредієнти для приготування піци. Інгредієнти для приготування піци: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" та "pineapple". Більшість з цих інгредієнтів знаходиться всередині матриці, яка представляє полиці комори. Використовуйте List Comprehensions, щоб зберегти в список усі елементи, які ви бажаєте взяти.

shelves = [ ["cheese", "dough", "jar"], ["jar", "red sauce", "jar"], ["peperoni", "jar" , "ham"], ["olive", "pepper", "onions"] ] ingredients = [ item for row in shelves for item in row if not "jar" in item]

У наведеному вище коді список ingredients проходить по рядках матриці з ім’ям shelves і виключає всі елементи, які є "jar". Цей List Comprehension економить час, дозволяючи не додавати все вручну. Використовуйте функцію speak() зі списком інгредієнтів, щоб переконатися, що ви збираєтесь використати потрібні елементи.

Коли всі інгредієнти зібрані, за винятком "pineapple", для функцій приготування піци необхідно додати функції place() для завершення їхньої роботи. Ці функції вже налаштовані в редакторі коду і називаються: peperoni_pizza(), яка вимагає: "peperoni"; vegetable_pizza(), яка вимагає: "olive", "pepper", "onion"; та pineapple_pizza(), яка вимагає: "ham" і "pineapple".

Пройдіть до темних знаків X та використовуйте декоровані функції для приготування піц. На знаках X з червоними килимами створіть peperoni_pizza(), на зелених килимах – vegetable_pizza(), а на жовтих килимах – pineapple_pizza(). По дорозі до жовтого килима зупиніться біля світлого знаку X, оберніться до шафи та використайте функцію collect(), щоб забрати "pineapple". Підготуйте всі піци для успішного проходження рівня.

Книга Коду