Coding for KidsCoding for Kids
Kreative NiveauerUdfordringerLærervejledning
Stem på funktioner
Avanceret Python Udviklingskursus
Kapitel
>
Niveau

Dekoratorer
Optimering af dekoratorer

Mål

Indsaml ingredienser og forbered forskellige typer pizzaer ved at bruge dekoratører.

Nu hvor ovnene er sat op, er det tid til at forberede nogle pizzaer, så vi kan bage dem senere. Nu hvor vi ved, hvordan vi bruger dekoratører, kan vi arbejde på at optimere dem lidt. Ved at bruge symbolet @ i koden efterfulgt af navnet på dekoratøren og placere denne kode over den dekorerede funktion, kan vi automatisk vedhæfte en dekoratør uden at bruge en variabel. For eksempel:

# 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 er værd at bemærke, at denne teknik forenkler processen ved at have en funktion forud-dekorateret, inden den bruges, men nogle gange ønsker du måske stadig at tildele en dekoratør til en variabel for større fleksibilitet.

For at starte, gå til det gyldne X-mærke og hent ingredienserne til at lave pizza. Ingredienserne til at lave pizzaen er: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" og "pineapple". De fleste af disse ingredienser er inde i en matrix, der repræsenterer spisekammerhylderne; brug listeforståelser til at gemme alle de elementer, du ønsker at hente, i en liste.

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 ovenstående kode cykler listen ingredients gennem rækkerne af matrixen kaldet shelves og fjerner alle elementer i matrixen med navnet "jar". Denne listeforståelse sparer os tid, da vi slipper for manuelt at tilføje alt sammen. Brug speak() funktionen med ingredienslisten for at verificere de elementer, du vil bruge.

Når alle ingredienser er samlet, undtagen "pineapple", skal funktionerne til at lave pizzaerne have tilføjet place()-funktioner for at fuldende deres funktionalitet. Disse funktioner er oprettet i kodeeditoren og hedder: peperoni_pizza() som kræver: "peperoni", vegetable_pizza() som kræver: "olive", "pepper", "onion", og pineapple_pizza() som kræver: "ham" og "pineapple".

Gå til de mørke X-mærker og brug de dekorerede funktioner til at forberede pizzaerne. På X-mærker med røde tæpper, opret peperoni_pizza(), på grønne tæpper, opret vegetable_pizza(), og på gule tæpper, opret pineapple_pizza(). På din vej til det gule tæppe, stop ved det lyse X-mærke, vend mod skabet og brug collect()-funktionen til at hente "pineapple". Forbered alle pizzaer for at fuldføre niveauet med succes.

Kodebog