Inhaltsverzeichnis

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:

Die Vorteile der for-Schleife liegen auf der Hand:

Doch warum gibt es überhaupt while-Schleifen, wenn die Vorteile der for-Schleife so überwiegen?

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

  1. Schaue dir die Beispiele mit den for-Schleifen unten an und …
  2. versuche herauszufinden, was sie machen/ausgeben.
  3. 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)

Lösung

Beispiel 2

for j in range(15):
    print(5*i)
    i = i + 3

Lösung

Aufgabe A3

  1. Wandle die while-Schleife in eine for-Schleife um (muss gleichen Output erzeugen):
i = 6
while i < 42:
    print(i)
    i = i + 4
  1. Wandle die for-Schleife in eine while-Schleife um:
for a in range(10):
    print(4*a)

Lösungen

Aufgabe A4

Löse die folgenden kurzen Aufgaben mithilfe von for-Schleifen:

  1. Schreibe eine for-Schleife, die die geraden Zahlen von 1 bis 20 ausgibt.
  2. Schreibe eine for-Schleife, die die Quadratzahlen von 1 bis 10 ausgibt, also $1, 4, 9, \ldots $

Lösungen

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:

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.

Lösung

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 …

  1. Ermittelt, welches Tier 'Bruell' macht.
  2. Welche Tiere 'Grrr!' machen und diese in einer Liste speichert. Der Code soll auch noch funktionieren, wenn weitere Tiere eingetragen werden, die 'Grrr!' machen.

Lösungen

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.

print(1,end='')
print(2,end='')
print(3,end='')
"""
Ausgabe: 123
Anstelle von:
1
2
3
"""