mit einer for-in-Schleife werden Elemente aus einer Liste genommen. Für jedes Element wird der Schleifeninhalt ausgeführt. Das aktuelle Element ist im Schleifeninhalt mit dem im Schleifenkopf gesetzten Namen ansprechbar
# Analogon
Border
Wiederholtes Ausführen eines Schrittes für mehrere Elemente, z.B. nach der Lektion im Raum jeden Arbeitsplatz kontrollieren: PC ausschalten und Stuhl ans Pult rücken.
# Flussdiagramm
# Pseudo-Code
für jede Zutat mache folgendes:
gib sie bei
rühre gut um
jetzt servieren
2
3
4
5
# Syntax
for element in liste:
#mach etwas mit element
2
liste
ist der Name der Variable woraus die Elemente genommen werden sollen
element
ist der Name welche die Elemente im Schleifeninhalt erhalten
für jedes Element der Liste mache…
# Beispiele
Summe und Durchschnitt bilden:
ausgaben = [12.50, 4.25, 9.90, 2.50]
summe = 0
for ausgabe in ausgaben:
summe = summe + ausgabe
durchschnitt = summe/len(ausgaben)
print("Gesamte Ausgaben: " + str(summe))
print(" im Durchschnitt: " + str(durchschnitt))
2
3
4
5
6
7
8
9
10
# Aufgaben
An Stelle der runden Kreise als Schneeflocken möchten wir nun mit Bildern arbeiten:
Schneeflocke
Finde ein Schneeflocken-Bild (flake.png) in einer sinnvollen Grösse und baue dieses ein:
...
flocke = Actor('flake', center=(100,100))
...
def draw():
...
flocke.draw()
...
2
3
4
5
6
7
Schneeflocken
Nun wollen wir viele Schneeflocken-Actors erzeugen. Weil wir diese nicht alle einzeln benennen können, speichern wir sie in einer Liste ab. In der draw()
-Funktion können wir diese Liste dann wieder durchgehen und jede Schneeflocke zeichnen:
import random
...
flocken = []
i = 0
while i < 500:
x = random.randint(0, WIDTH)
y = ...
flocke = Actor('flake', center=(x,y))
flocken.append(flocke)
i = i + 1
...
def draw():
...
for flocke in flocken:
flocke.draw()
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Animation 1
Wie können wir nun die Schneeflocken animieren? Wir müssen die y-Koordinaten jeder Flocke etwas vergrössern und das Bild neu zeichnen:
- Das Neuzeichnen übernimmt pygameZero für uns
- Für Verschiebung von Actors gibt es die
update()
-Funktion
Wir gehen also in der update()
-Funktion die Liste der Schneeflocken durch und verschieben jede Flock in y-Richtung:
...
def update():
...
for flocke in flocken:
flocke.y = flocke.y + 1
2
3
4
5
6
7
Erweiterungsmöglichkeiten:
- Flocken auch etwas in x-Richtung verschieben
- nicht alle Flocken gleich weit verschieben
- grössere Flocken schneller fallen lassen
- leichte Zufallswerte bei der Verschiebung verwenden
← Listen Verzweigungen →