Coding for KidsCoding for Kids
Kreativa NivåerUtmaningarLärarguide
Rösta på funktioner
Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå

Dekoratorer
Optimerande Dekoratörer

Mål

Samla ingredienser och förbered olika typer av pizzor med hjälp av dekoratörer.

Nu när ugnarna har ställts in, är det dags att förbereda några pizzor så att vi kan laga dem senare. Nu när vi vet hur man använder dekoratörer kan vi arbeta för att optimera dem lite. Genom att använda symbolen @ i koden följt av dekoratörens namn och placera denna kod ovanför den dekorerade funktionen, kan vi automatiskt fästa en dekoratör utan att använda en variabel. Till exempel:

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

Det är värt att notera att denna teknik förenklar processen genom att ha en funktion fördekorerad innan den används, men ibland kanske du ändå vill tilldela en dekoratör till en variabel för större flexibilitet.

För att börja, gå till det gyllene X-tecknet och hämta ingredienserna för att göra pizza. Ingredienserna för att göra pizzan är: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" och "pineapple". De flesta av dessa ingredienser finns inne i en matris som representerar skåpens hyllor, använd List Comprehensions för att spara alla objekt du vill hämta i en 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]

I den ovanstående koden cyklar listan ingredients igenom raderna i matrisen shelves och tar bort alla objekt som är "jar". Denna List Comprehension sparar oss tid från att manuellt behöva lägga till allt. Använd funktionen speak() med ingredienslistan för att verifiera de objekt du tänker använda.

När alla ingredienser är insamlade utom "pineapple", behöver funktionerna för att göra pizzorna få place()-funktioner tillagda för att slutföra deras användbarhet. Dessa funktioner är uppsatta i kodeditoren och är namngivna: peperoni_pizza() som kräver: "peperoni", vegetable_pizza() som kräver: "olive", "pepper", "onion", och pineapple_pizza() som kräver: "ham" och "pineapple".

Gå till de mörka X-tecknen och använd de dekorerade funktionerna för att förbereda pizzorna. På X-tecken med röda mattor skapar du peperoni_pizza(), på gröna mattor skapar du vegetable_pizza() och på gula mattor skapar du pineapple_pizza(). På vägen till den gula mattan, stanna vid det ljusa X-tecknet, vänd dig mot skåpet och använd funktionen collect() för att hämta "pineapple". Förbered alla pizzor för att framgångsrikt slutföra nivån.

Kodbok