**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
Aufgabe B1
Für diese mehrteilige Aufgabe arbeiten wir mit den folgenden zwei Listen.
animals = ['Hund', 'Katze', 'Kuh', 'Schwein', 'Vogel', 'Loewe', 'Elefant', 'Frosch', 'Pferd', 'Affe', 'Gans', 'Eule', 'Schaf', 'Ente', 'Hahn', 'Maus', 'Tiger', 'Baer', 'Biene', 'Delfin'] sounds = ['Wuff!', 'Miau!', 'Muh!', 'Oink!', 'Zwitscher!', 'Bruell!', 'Toeroeoe!', 'Quak!', 'Wieher!', 'Uh-uh!', 'Gaggel!', 'Hu-hu!', 'Maeh!', 'Quack!', 'Kikeriki!', 'Piep!', 'Grrr!', 'Grrr!', 'Summ!', 'Klack!']
Löse alle Aufgaben mithilfe von for-Schleifen.
Teil 1
Schreibe ein Programm, welches alle Tiere der Reihe nach ausgibt.
Teil 2
Schreibe ein Programm, welches immer ein Tier zusammen mit dem passenden Geräusch ausgibt:
Hund: Wuff! Katze: Miau! Kuh: Muh! ...
Teil 3
Schreibe ein Programm, welches ermittelt, an welcher Stelle die 'Gans' in der Liste animals
steht.
Teil 4
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.
Teil 5
Schreibe ein Programm, welches …
- Ermittelt, welches Tier 'Bruell' 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.
Aufgabe B2
Kunst mit verschachtelten for-Schleifen!
Betrachte das folgende Beispiel, welches ein Muster in der Konsole erzeugt.
for i in range(5): for j in range(i+1): print('*', end='') print()
Schreibe nun einen Code, auch mit zwei ineinander verschachtelten for-Schleifen, die das folgende Schachbrett.Muster erzeugen:
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Tipp: Fügt man dem print-Befehl die Option end=''
an, wird am Ende kein Zeilenumbruch gemacht.
<code python>
print(1,end=)
print(2,end=
)
print(3,end='')
<code>