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

Generatoren
Einen Generator erstellen

Manchmal möchten Sie möglicherweise Werte konsistent erzeugen, anstatt nur einmalige Ausgaben zu erzielen. Ähnlich wie Funktionen funktionieren, werden Generatoren auf die gleiche Weise geschrieben und ausgeführt, außer dass sie yield() statt return() verwenden, wenn sie eine Ausgabe erzeugen.

In dieser Übung müssen Sie Flaschen mit Milch aus den Tanks im Stall füllen. Verwenden Sie einen Generator, um das Befüllen der Flaschen zu iterieren und sicherzustellen, dass überschüssige Milch aus den Tanks gesammelt wird.

Guide

Ziel

Flaschen mit Milch füllen, indem die Milchtanks mit Generatoren abgepumpt werden.

Die Maschinen, die die Kuhmilch lagern, sind fast voll, und Sie müssen die Milch abfüllen und lagern, bevor sie schlecht wird. Dies kann mit normalen Mitteln knifflig sein, und die Menge an Milch, die Sie extrahieren können, kann etwas variieren. Glücklicherweise können Sie Generatoren verwenden, um diesen Prozess reibungslos und einfach zu gestalten.

Es gibt zwei (2) Tanks mit Milch, deren Milch abgepumpt und abgefüllt werden muss. Jede Maschine hat Abteilungen, die Milch lagern, diese werden durch Listenkonstanten namens: tank_a und tank_b dargestellt. Außerdem hat jeder Tank einen Überschuss, den Sie sammeln können.

Generatoren verwenden die gleiche Syntax wie Funktionen, aber sie verwenden yield anstelle von return für ihre Ausgabe. Richten Sie einen Generator namens fill() ein und setzen Sie ihn mit dem Argument list, hier geben Sie die oben genannten Konstanten ein.

def fill(list): for x in range(3): yield list[x] yield 5

Der Generator liest die Daten aus den drei (3) Feldern der Listenkonstanten, die durch die Abteilungen in der Maschine dargestellt werden, und fügt am Ende einen Überschuss hinzu, der fünf (5) beträgt.

Sammeln Sie das Korbobjekt im Feld, um Zugriff auf die für das Abfüllen notwendigen Flaschen zu erhalten, und gehen Sie zu den zwei (2) X-Markierungen, um die Milch mithilfe einer for-Schleife zu sammeln.

Dank der yield-Anweisung können die vom Generator erzeugten Werte direkt aus einer for-Schleife gelesen werden. Richten Sie eine ein, die die collect()-Funktion verwendet, um die "Milch" von der Maschine zu erwerben. Folgen Sie dem, indem Sie speak() verwenden, um zu überprüfen, wie viel Milch jede Flasche gespeichert hat. Zum Beispiel:

for bottles in fill(tank_a): player.collect("milk") player.speak("%d Pints Milch gesammelt" % (bottles))

Schreiben und verwenden Sie diese for-Schleife auf beiden X-Markierungen, bei der hellen X-Markierung verwenden Sie das Argument tank_a und bei der dunklen X-Markierung das Argument tank_b, um das Level abzuschließen.

Codebuch