**Dies ist eine alte Version des Dokuments!**
For-Schleifen
1. Einfache for-Schleife
Bisher haben wir (offiziell) nur mit while-Schleifen gearbeitet, wie der folgenden:
i = 0 # benoetigen eine Variable (genannt Index), setzte auf Startwert while i < 10: # solange Bedingung x < 10 erfuellt ist ... print(i) # gebe Variable aus i = i + 1 # erhoehe Variable, so dass Bedingung irgendwann nicht mehr erfuellt (sonst Endlosschleife!)
Die Schleife gibt alle Zahlen von $0,1,\ldots$ bis und mit $10$ aus. Genau das Gleiche kann man auch mit einer for-Schleife machen:
for i in range(0,10,1): # 1. Zahl: Startwert, 2. Zahl: Schlusswert+1, 3. Zahl: Schrittgroesse print(i) # Ausgabe: 0,1,2,3,4,5,6,7,8,9
Beachte dabei:
- Der Index (Variable) wird automatisch in der Schleife erstellt.
- Man muss nicht explizit dafür sorgen, dass Index erhöht wird, also kein
i = i + 1
.
Die Vorteile der for-Schleife liegen auf der Hand:
- weniger Code
- unmöglich, aus Versehen Endlosschleife zu programmieren.
Doch warum gibt es überhaupt while-Schleifen, wenn die Vorteile der for-Schleife so überwiegen?
- Es gibt Dinge, die man nur mit while-Schleifen umsetzen kann und nicht mit for-Schleifen.
- Zum Beispiel Endlosschleifen (sind manchmal tatsächlich erwünscht!).
- while-Schleifen sind einfacher zu verstehen und deshalb besser geeignet für den Einstieg.
Die for-Schleife im Beispiel oben kann man sogar noch kürzer schreiben:
for i in range(10): print(i) # Ausgabe: 0,1,2,3,4,5,6,7,8,9
Falls der Startwert des Index $0$ und die Schrittgrösse $1$ ist, muss man dies nicht explizit angeben.
Aufgaben A
Aufgabe A1
- Schaue dir die Beispiele mit den for-Schleifen unten an und …
- versuche herauszufinden, was sie machen/ausgeben.
- Tippe nachher die Beispiele ab und überprüfe, ob du richtig gelegen hast.
Beispiel 1
for k in range(5): print(k)
Beispiel 2
for k in range(15,3): print(k)
Beispiel 3
for j in range(5,6,10): print(j)
Beispiel 3
for i in range(8): print(3*i)
Aufgabe A2
In jedem der Beispiele unten hat es einen Fehler, resp. etwas, was unschön ist. Wie müsste der Code ausschauen?
Beispiel 1
i = 0 for i in range(4,12): print(2*i)
Beispiel 2
for j in range(15): print(5*i) i = i + 3
Aufgabe A3
- Wandle die while-Schleife in eine for-Schleife um (muss gleichen Output erzeugen):
i = 6 while i < 42: print(i) i = i + 4
- Wandle die for-Schleife in eine while-Schleife um:
for a in range(10): print(4*a)
Aufgabe A4
Löse die folgenden kurzen Aufgaben mithilfe von for-Schleifen:
- Schreibe eine for-Schleife, die die geraden Zahlen von 1 bis 20 ausgibt.
- Schreibe eine for-Schleife, die die Quadratzahlen von 1 bis 10 ausgibt, also $1, 4, 9, \ldots $
2. for-Schleifen für Listen
Im ersten Kapitel hier haben wir gesehen, dass man for- anstelle von while-Schleifen verwenden kann, um zum Beispiel hoch zu zählen: $0,1,2,...,10$. Besonders praktisch sind for-Schleifen aber, wenn man mit Listen arbeitet.
Wenn wir eine Liste, z.B. li = ['Anna','Christian','Kunibert','Petra','Xavier']
haben, können wir mit einer while-Schleife die Elemente der Liste durchgehen:
i = 0 while i < len(li): print(li[i]) i = i + 1
Das Gleiche können wir auch mit einer for-Schleife erreichen:
for i in range(len(li)): print(li[i])
Vorteile:
- Kürzer
- muss sich nicht selbst um Erhöhung von Index
i
kümmern (Endlosschleife unmöglich!)
Im Beispiel oben interessieren wir uns nur für die Elemente und nicht deren Positionen in der Liste. Wir können deshalb mit einer for-Schleife auch die Elemente direkt durchgehen:
for el in li: print(el)
Aufgaben B
Für die folgenden Aufgaben arbeiten wir mit den folgenden zwei Listen.
animals = ['Hund', 'Katze', 'Kuh', 'Schwein', 'Vogel', 'Löwe', 'Elefant', 'Frosch', 'Pferd', 'Affe', 'Gans', 'Eule', 'Schaf', 'Ente', 'Hahn', 'Maus', 'Tiger', 'Bär', 'Biene', 'Delfin'] sounds = ['Wuff!', 'Miau!', 'Muh!', 'Oink!', 'Zwitscher!', 'Brüll!', 'Töröö!', 'Quak!', 'Wieher!', 'Uh-uh!', 'Gaggel!', 'Hu-hu!', 'Mäh!', 'Quack!', 'Kikeriki!', 'Piep!', 'Grrr!', 'Grrr!', 'Summ!', 'Klack!']
Aufgabe 1
Schreibe ein Programm, welches alle Tiere der Reihe nach ausgibt.
Aufgabe
Schreibe ein Programm, welches ermittelt, an welcher Stelle die 'Gans' in der Liste animals
steht.
Aufgabe
Schreibe ein Programm, welches immer ein Tier zusammen mit dem passenden Geräusch ausgibt:
Aufgabe
Schreibe ein Programm, in dem die Benutzerin aufgefordert wird, ein Tier einzugeben. Der Code gibt dann aus, wie das Tier macht. Verwende for-Schleifen anstelle von while-Schleifen.
Aufgabe
Schreibe ein Programm, welches …
- Ermittelt, welches Tier 'Brüll' macht.
- Welche Tiere 'Grrr!' machen und diese in einer Liste speichert. Der Code soll auch noch funktionieren, wenn weitere Tiere eingetragen werden, die 'Grrr!' machen.