Coding for KidsCoding for Kids
Kreative NivåerUtfordringerLærerveiledning
Stem på funksjoner
Avansert Pythonutviklingskurs
Kapittel
>
Nivå

Dekoratører
Optimalisere dekoratører

Mål

Samle ingredienser og forbered ulike typer pizza med bruk av dekoratører.

Nå som ovnene er satt opp, er det på tide å forberede noen pizzaer slik at vi kan steke dem senere. Nå som vi vet hvordan man bruker dekoratører, kan vi jobbe for å optimalisere dem litt. Ved å bruke @-symbolet i koden etterfulgt av navnet på dekoratøren og plassere denne koden over den dekorerte funksjonen, kan vi automatisk legge til en dekoratør uten å bruke 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 verdt å merke seg at denne teknikken forenkler prosessen ved at en funksjon blir forhåndsdekorert før bruk, men noen ganger ønsker du kanskje fortsatt å tildele en dekoratør til en variabel for større fleksibilitet.

For å starte, gå til gull X-merket og hent ingrediensene for å lage pizza. Ingrediensene for å lage pizzaen er: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" og "pineapple". De fleste av disse ingrediensene befinner seg inne i en matrise som representerer oppbevaringshyllene; bruk List Comprehensions for å lagre alle elementene du ønsker å 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 koden ovenfor går listen ingredients gjennom radene i matrisen kalt shelves og fjerner alle elementer som er "jar". Denne List Comprehension sparer oss for tid ved å slippe å legge til alt manuelt. Bruk funksjonen speak() med ingredienslisten for å verifisere elementene du skal bruke.

Når alle ingredienser er samlet, bortsett fra "pineapple", må funksjonene for å lage pizzaer få lagt til place()-funksjoner for å fullføre funksjonaliteten. Disse funksjonene er satt opp i kodeeditoren og heter: peperoni_pizza() som krever: "peperoni", vegetable_pizza() som krever: "olive", "pepper", "onion", og pineapple_pizza() som krever: "ham" og "pineapple".

Gå til de mørke X-markene og bruk de dekorerte funksjonene for å forberede pizzaene. På X-merker med røde tepper, opprett peperoni_pizza(), på grønne tepper, opprett vegetable_pizza(), og på gule tepper, opprett pineapple_pizza(). På vei til det gule teppet, stopp ved det lyse X-merket, vend deg mot skapet og bruk collect()-funksjonen for å hente "pineapple". Forbered alle pizzaene for å fullføre nivået med suksess.

Kodebok