Coding for KidsCoding for Kids
Niveles CreativosDesafíosGuía del Maestro
Votar por funciones
Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel

Decoradores
Optimizando Decoradores

Objetivo

Recolecta ingredientes y prepara diferentes tipos de pizzas utilizando decoradores.

Ahora que los hornos han sido configurados, es hora de preparar unas pizzas para poder cocinarlas más tarde. Ahora que sabemos cómo usar decoradores, podemos trabajar para optimizarlos un poco. Utilizando el símbolo @ en el código seguido del nombre del decorador y colocando este código encima de la función decorada, podemos adjuntar automáticamente un decorador sin usar una variable. Por ejemplo:

# 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()

Vale la pena mencionar que esta técnica simplifica el proceso al tener una función pre-decorada antes de su uso, sin embargo, a veces aún querrás asignar un decorador a una variable para mayor flexibilidad.

Para comenzar, camina hasta la marca X dorada y recoge los ingredientes para hacer pizza. Los ingredientes para hacer la pizza son: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" y "pineapple". La mayoría de estos ingredientes se encuentran dentro de una matriz que representa los estantes de la despensa; utiliza comprensiones de listas para almacenar todos los elementos que deseas recoger en una lista.

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]

En el código anterior, la lista ingredients recorre las filas de la matriz llamada shelves y elimina todos los elementos que sean "jar". Esta comprensión de listas nos ahorra el tiempo de tener que agregar todo manualmente. Utiliza la función speak() con la lista de ingredientes para verificar los elementos que vas a usar.

Una vez que se han recogido todos los ingredientes, excepto la "pineapple", las funciones para hacer las pizzas necesitan que se les agregue la función place() para completar su utilidad. Estas funciones están configuradas en el editor de código y se llaman: peperoni_pizza() que requiere: "peperoni", vegetable_pizza() que requiere: "olive", "pepper", "onion", y pineapple_pizza() que requiere: "ham" y "pineapple".

Dirígete a las marcas X oscuras y utiliza las funciones decoradas para preparar las pizzas. En las marcas X con alfombras rojas, crea peperoni_pizza(), en las alfombras verdes, crea vegetable_pizza() y en las alfombras amarillas, crea pineapple_pizza(). En tu camino hacia la alfombra amarilla, detente en la marca X clara, enfrenta el armario y utiliza la función collect() para recoger la "pineapple". Prepara todas las pizzas para completar exitosamente el nivel.

Libro de Código