Coding for KidsCoding for Kids
Creatieve LevelsUitdagingenLerarengids
Stem op functies
Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau

Decoratoren
Decorator optimaliseren

Doelstelling

Verzamel ingrediënten en bereid verschillende soorten pizza’s door decorators te gebruiken.

Nu de ovens zijn ingericht, is het tijd om wat pizza’s te bereiden zodat we ze later kunnen bakken. Nu we weten hoe we decorators moeten gebruiken, kunnen we ze wat optimaliseren. Door in de code het teken @ te gebruiken, gevolgd door de naam van de decorator, en deze code boven de gedecoreerde functie te plaatsen, kunnen we automatisch een decorator toevoegen zonder een variabele te gebruiken. Bijvoorbeeld:

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

Het is belangrijk op te merken dat deze techniek het proces vereenvoudigt door een functie vooraf te decoreren, maar soms wil je toch een decorator aan een variabele toewijzen voor meer flexibiliteit.

Om te beginnen, loop naar het gouden X-teken en pak de ingrediënten om pizza te maken. De ingrediënten voor het maken van de pizza zijn: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" en "pineapple". De meeste van deze ingrediënten bevinden zich in een matrix die de voorraadkastplanken voorstelt, gebruik List Comprehensions om alle items die je wilt pakken in een lijst op te slaan.

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]

In de bovenstaande code doorloopt de lijst ingredients de rijen van de matrix genaamd shelves en verwijdert alle items die "jar" heten. Deze List Comprehension bespaart ons de tijd om alles handmatig samen te voegen. Gebruik de speak() functie met de ingrediëntenlijst om te verifiëren welke items je gaat gebruiken.

Zodra alle ingrediënten zijn verzameld, behalve de "pineapple", moeten de functies om de pizza’s te maken, place() functies toegevoegd krijgen om hun functionaliteit te voltooien. Deze functies zijn ingesteld in de code-editor en heten: peperoni_pizza() die nodig heeft: "peperoni", vegetable_pizza() die nodig heeft: "olive", "pepper", "onion", en pineapple_pizza() die nodig heeft: "ham" en "pineapple".

Loop naar de donkere X-tekens en gebruik de gedecoreerde functies om de pizza’s voor te bereiden. Op X-tekens met rode tapijten maak je peperoni_pizza(), op groene tapijten maak je vegetable_pizza() en op gele tapijten maak je pineapple_pizza(). Onderweg naar het gele tapijt, stop bij het lichte X-teken, richt je op de kast en gebruik de collect() functie om de "pineapple" te pakken. Bereid alle pizza’s voor om het level succesvol te voltooien.

Codeboek