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

Декораторы
Более сложные декораторы

Цель

Поместите пиццы в духовку при правильной температуре и приготовьте салаты с помощью декораторов с аргументами.

Теперь, когда пиццы уже подготовлены, настало время запечь их в духовках, а когда это будет сделано, следует приготовить салаты, которые будут подаваться с пиццами. Вы можете выполнить эти задачи, используя декораторы с аргументами; подобно пользовательским функциям, вы также можете передавать аргументы через декораторы.

Пиццы нужно поместить в духовку, но сначала вам необходимо собрать больше firewood в нижней левой части карты. После того как вы их соберете, заберите корзину на прилавке у левой духовки — эта корзина содержит pizza, предназначенную для запекания в духовках.

def place_oven(func): def check(temp): if temp < 450: player.speak("Oven is not hot enough") player.open() player.place("firewood") player.close() return return func(temp) return check @place_oven def bake_pizza(temp): player.open() player.place("pizza") player.close() player.speak("I am baking Pizza at %d degrees" % (temp))

Перейдите к светлым отметкам X и используйте функцию read(), находясь лицом к духовке, чтобы определить её температуру. Затем напишите декорированную функцию bake_pizza() и передайте в неё считанную температуру в качестве аргумента, например: bake_pizza(450).

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

cabinet = [["lettuce"], ["carrot" ,"tomato"] , ["oil" , "ranch", "cesar"] , ["cheese"]] ingredients = [item for sublist in cabinet for item in sublist]

Создайте список с именем ingredients и используйте генератор списка для «выпрямления» вложенного списка. Это процесс удаления вложенных списков, чтобы все элементы оказались в одном списке, а не распределены по нескольким маленьким спискам. После того как список будет выпрямлен, используйте функцию speak() с этим списком, чтобы проверить, какие ингредиенты вы будете использовать.

После того, как все необходимые предметы будут размещены в духовках, и список ingredients будет подготовлен, перейдите к темным отметкам X, чтобы создать салаты. В редакторе настроена функция и декоратор, на этот раз они не связаны и должны быть объявлены вручную, например: salad = add_toppings(toss_salad("ranch","carrot")). Этот набор функций принимает два (2) аргумента: dressing и vegetable.

def add_toppings(func): def add(dressing, vegetable): player.place(dressing) player.place(vegetable) func(dressing, vegetable) return add @add_toppings def toss_salad(dressing, vegetable): player.combine("lettuce", dressing, vegetable) player.speak("I am preparing salad with %s dressing and %s" % (dressing, vegetable))

Каждая темная отметка X расположена на цветном ковре, и на каждом из них нужно приготовить разный салат, используя ингредиенты, собранные из шкафа. На желтом ковре приготовьте салат с использованием: cesar и cheese, на зеленом ковре — салат с использованием: oil и tomato, на синем ковре — салат с использованием: ranch и carrot.

Как только все три (3) салата будут собраны с использованием декорированной функции toss_salad(dressing, vegetable) в указанном формате, уровень будет пройден.

Книга Кода