Coding for KidsCoding for Kids
Níveis CriativosDesafiosGuia do Professor
Votar em funcionalidades
Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível

Decoradores
Otimizando Decoradores

Objetivo

Coletar ingredientes e preparar diferentes tipos de pizza usando decorators.

Agora que os fornos foram configurados, é hora de preparar algumas pizzas para que possamos cozinhá-las depois. Agora que sabemos como usar decorators, podemos trabalhar para otimizá-los um pouco. Usando o símbolo @ no código seguido pelo nome do decorator e colocando esse código acima da função decorada, podemos automaticamente anexar um decorator sem usar uma variável. Por exemplo:

# 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 ressaltar que essa técnica simplifica o processo ao ter uma função pré-decorada antes do uso, entretanto às vezes você pode ainda desejar atribuir um decorator a uma variável para maior flexibilidade.

Para começar, caminhe até a marca de X dourada e pegue os ingredientes para fazer a pizza. Os ingredientes para fazer a pizza são: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" e "pineapple". A maioria desses ingredientes está dentro de uma Matriz representando as prateleiras da despensa, use List Comprehensions para armazenar todos os itens que você deseja pegar em uma 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]

No código acima a lista ingredients percorre as linhas da Matriz chamada shelves e remove todos os itens correspondentes a "jar". Essa List Comprehension nos economiza tempo de ter que adicionar tudo manualmente. Use a função speak() com a lista de ingredientes para verificar os itens que você vai usar.

Uma vez que todos os ingredientes foram coletados, exceto o "pineapple", as funções para fazer as pizzas precisam de funções place() adicionadas para completar sua utilidade. Essas funções estão configuradas no editor de código e são nomeadas: peperoni_pizza() que requer: "peperoni", vegetable_pizza() que requer: "olive", "pepper", "onion", e pineapple_pizza() que requer: "ham" e "pineapple".

Caminhe até as marcas de X escuras e use as funções decoradas para preparar as pizzas. Nas marcas de X com carpetes vermelhos crie peperoni_pizza(), nos carpetes verdes crie vegetable_pizza() e nos carpetes amarelos crie pineapple_pizza(). No seu caminho até o carpete amarelo, pare na marca de X clara, vire-se para o armário e use a função collect() para pegar o "pineapple". Prepare todas as pizzas para completar com sucesso o nível.

Livro de Código