**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)