Coding for KidsCoding for Kids
Kreative LevelHerausforderungenLehrerhandbuch
Für Funktionen abstimmen
Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe

Dekoratoren
Optimierung von Dekoratoren

Ziel

Sammle Zutaten und bereite verschiedene Arten von Pizzen mithilfe von Decorators vor.

Nachdem die Öfen eingerichtet wurden, ist es Zeit, einige Pizzen vorzubereiten, damit wir sie später backen können. Nun, da wir wissen, wie man Decorators verwendet, können wir diese etwas optimieren. Durch die Verwendung des @ Symbols im Code, gefolgt vom Namen des Decorators und durch Platzieren dieses Codes über der dekorierten Funktion, können wir einen Decorator automatisch anhängen, ohne eine Variable zu benutzen. Zum Beispiel:

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

Es sei darauf hingewiesen, dass diese Technik den Prozess vereinfacht, indem eine Funktion vor der Verwendung vor-dekoriert wird, dennoch möchte man manchmal den Decorator einer Variable zuweisen, um mehr Flexibilität zu haben.

Um zu beginnen, geh zum goldenen X-Marker und nimm die Zutaten, um Pizza zu machen. Die Zutaten für die Zubereitung der Pizza sind: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" und "pineapple". Die meisten dieser Zutaten befinden sich in einer Matrix, die die Regalbereiche der Speisekammer darstellt. Verwende List Comprehensions, um alle Elemente, die du aufnehmen möchtest, in einer Liste zu speichern.

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]

Im obigen Code durchläuft die Liste ingredients die Zeilen der Matrix namens shelves und entfernt alle Elemente, die "jar" entsprechen. Diese List Comprehension erspart uns die mühsame manuelle Zusammenstellung aller Elemente. Verwende die Funktion speak() mit der Zutatenliste, um die zu verwendenden Elemente zu überprüfen.

Nachdem alle Zutaten gesammelt wurden, außer der "pineapple", müssen die Funktionen zum Erstellen der Pizzen um place()-Funktionen ergänzt werden, um ihre Funktionalität zu vervollständigen. Diese Funktionen sind im Code-Editor eingerichtet und heißen: peperoni_pizza(), die "peperoni" benötigt, vegetable_pizza(), die "olive", "pepper", "onion" benötigt, und pineapple_pizza(), die "ham" und "pineapple" benötigt.

Geh zu den dunklen X-Markierungen und benutze die dekorierten Funktionen, um die Pizzen vorzubereiten. Auf X-Markierungen mit roten Teppichen erstelle peperoni_pizza(), auf grünen Teppichen vegetable_pizza() und auf gelben Teppichen pineapple_pizza(). Auf dem Weg zum gelben Teppich halte an der hellen X-Markierung, wende dich dem Schrank zu und benutze die Funktion collect(), um die "pineapple" aufzunehmen. Bereite alle Pizzen vor, um das Level erfolgreich abzuschließen.

Codebuch