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

Generatoren
Ein Generator manuell fortsetzen

Ziel

Verwenden Sie einen Generator in einer manuellen Sequenz, um Materialien zur Herstellung von Brot zusammenzustellen und zu produzieren.

Vor Ihnen befindet sich eine Anlage, in der Sie Brotteig mit den Pressen zusammenstellen können. Normalerweise würden Sie die Funktion combine() verwenden, um Materialien zusammenzuführen, aber das ist hier nicht der Fall, da die Materialien zuerst veredelt werden müssen, bevor sie zusammengeführt werden können.

Für diese Aufgabe können wir Generatoren verwenden, da sie kundenspezifisch verschiedene Dateitypen ausgeben können und ihre Sequenz auf Abruf und nicht automatisch ausgegeben wird, wie es bei Funktionen und Schleifen der Fall ist. Hier ein Beispiel:

def bread(): yield 5 yield "grain"

Der obige Code enthält einen Generator mit zwei yield-Anweisungen, von denen eine eine reelle Zahl und die andere eine Zeichenkette produziert. Wir können die Werte des Generators nach Belieben mit der Funktion next() erzeugen. So funktioniert es:

recipe = bread() # Generator einrichten player.place(next(recipe)) # Erster Wert wird aufgerufen player.collect(next(recipe)) # Zweiter Wert wird aufgerufen

Im obigen Beispiel wird der Generator eingerichtet und die Funktion next() wird mit dem Generator verwendet, um den ersten yield-Wert zur Verwendung in einer place()-Funktion aufzurufen. Dies wird mit dem zweiten Wert wiederholt, der jedoch in einer collect()-Funktion verwendet wird. Dies erleichtert das Aufrufen von Werten verschiedener Typen in einer Sequenz, ohne mehrere Listen oder Variablen verwenden zu müssen.

Ein Generator namens bread() wird im Code-Editor definiert, aber er benötigt Mengenangaben für jede Zutat, um den Brotteig veredeln zu können. Diese Zahlen stehen auf dem Schild neben der Anlage. Richten Sie den Generator zur Verwendung ein, indem Sie ihn referenzieren, so: recipe = bread()

Zuerst gehen Sie zur weißen X-Markierung neben dem Milchtank und collect() die letzte Milch im Tank mit der Funktion next(), so: player.collect(next(recipe)). Gehen Sie dann zur goldenen X-Markierung neben dem Schild und nutzen Sie die Funktion speak(), um die Mengenangaben für den Generator zu ermitteln und notieren Sie sie im Generator. Die Daten sind in einer Konstante namens "sign" gespeichert und würden so aufgerufen: player.speak(sign).

Sobald alle Werte im Generator eingegeben sind, gehen Sie in die Anlage und verwenden Sie player.place(next(recipe)) auf den dunklen X-Markierungen und player.collect(next(recipe)) auf den hellen X-Markierungen, um das Level abzuschließen.

Codebuch