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

Generatoren
Daten an einen Generator senden

Ziel

Sammeln Sie Wolle und spinnen Sie diese mit den Spindeln zu Garn, indem Sie Daten in einen Generator senden.

Einige Schafe werden etwas zu wollig, es wäre am besten, sie zu scheren und ihre Wolle zu sammeln. Sie können dann die Wolle durch eine Spindel geben, um Garn zu produzieren. Dafür müssen wir einen Generator verwenden, da sich die Menge an verarbeitetem Garn und Wolle stark unterscheiden kann.

Definieren Sie zuerst einen Generator, der in der Lage ist Garn zu spinnen, und nennen Sie ihn spin(). Dieser Generator muss so eingerichtet werden, dass er externe Eingaben verwenden kann, um zu funktionieren. Er liest Daten von yield und speichert sie in einer Variablen, dann modifiziert er deren Inhalt, indem er deren Länge in jedem Zyklus erhöht und schließlich ein Ergebnis produziert.

def spin(): cycle = 1 while True: cycle += 1 yarn = yield yarn = yarn * cycle yield player.speak("You've spun %d ft of yarn" % (yarn))

Da dies ein Generator ist, kann die while()-Anweisung im Inneren pausiert und modifiziert werden, um die gewünschte Ausgabe zu erzeugen. Diese Kontrollmöglichkeit steht im Mittelpunkt dessen, was ein Generator ist und wie er beim Verarbeiten von Daten nützlich sein kann. Um Daten in den Generator einzufügen, definieren Sie ihn und verwenden Sie die send()-Funktion, um ihm beliebige Daten zu übermitteln, zum Beispiel:

spindle = spin() # Erstellen Sie eine Instanz des Generators next(spindle) # Führen Sie den Generator einen Einzelschritt aus spindle.send(6) # Daten in den Generator einfügen # In diesem Fall senden Sie ihm die Zahl 6

Gehen Sie zu dem Punkt, den das X auf den farbigen Teppichen markiert, und stehen Sie den Schafen gegenüber. Es gibt eine Wörterbuchkonstante namens sheep, die den Wert enthält, wie viel Wolle Sie bei jedem Schaf scheren können. Verwenden Sie die speak()-Funktion mit dem Wörterbuch und der Farbe des Teppichs, auf dem Sie stehen, um die Schafwolle zu scheren und zu überprüfen, wie viel Sie gesammelt haben. Zum Beispiel: player.speak(sheep["green"]).

Es gibt insgesamt vier (4) farbige Teppiche: "green", "red", "blue" und "orange". Nachdem Sie die Schafe geschoren haben, gehen Sie zu den dunklen X-Markierungen bei jedem farbigen Teppich, wo sich die Spindeln befinden. Verwenden Sie send(), um die Anzahl der Pfund geschorener Wolle jedes Schafes in ihrer jeweiligen Farbe in den Generator einzugeben.

Zum Beispiel, wenn Sie beim Scheren der Schafe auf dem "green" Teppich 4 Pfund Wolle scheren, gehen Sie zum "green" Teppich bei den Spindeln und senden diese Daten an den Generator, so:

next(spindle) spindle.send(4)

Tun Sie dies für alle vier (4) dunklen X-Markierungen auf den farbigen Teppichen, um das Level zu beenden.

Codebuch