For-Schleifen

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.

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

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!)
  • gf_informatik/for_loops_sca.1686819960.txt.gz
  • Zuletzt geändert: 2023-06-15 09:06
  • von sca