Der Python-Kurs: for-Schleife
Willemers Informatik-Ecke
Strings Python-Kurs Tupel

Inhalt dieser Seite Python bietet Ihnen neben while eine weitere Schleife an, die mit dem Befehl for eingeleitet wird. Während while unter einer Bedingung schleift, iteriert for über einem Bereich oder einer Liste von Elementen.

Statt der Bedingung folgt auf den Befehl for eine Variable, die nacheinander verschiedene Werte annimt, die aus einer Liste stammen.

Zählen mit for

Wir greifen noch einmal die Idee des Zählens von 1 bis 10 auf. Das sähe bei einer for-Schleife so aus:
for i in 1, 2, 3, 4, 5, 6, 7, 8, 9, 10:
    print(i)
Der eingerückte Teil wird in der Schleife wiederholt. Bei jedem Durchgang erhält die Variable i den nächsten Wert der Liste.

Der Bereich: range

Um die Werte von 1 bis 10 einfacher zu erstellen, hilft die Funktion range. Sie liefert als Ergebnis eine Liste von Werten, die durch die Parameter beschrieben werden.
for i in range(1,11,1):
    print(i)
Die Parameter von range() geben den Startwert, den ersten nicht mehr zur Liste gehörigen Wert und die Schrittweite an. Wenn der dritte Parameter wie in diesem Fall 1 ist, kann er weggelassen werden.
for i in range(1,11):
    print(i)
Wird range nur ein Wert übergeben, wird die Anfangszahl auf 0 gesetzt. Das ist aus vielen Gründen praktischer als die 1. Nur beim menschlichen Zählen ist es etwas ungewohnt. Aber das kann man ja bei der Ausgabe korrigieren.
for i in range(10):
    print(i+1)

range ist aus Sicht von Python ein eigener Typ. Die Abfrage durch type ergibt den Typ range, wie dieser Screenshot vom Interpreter zeigt:

>>> type(range(1,11))
<class 'range'>

Mit for durch einen String

So wie die for-Schleife durch einen Range läuft, kann sie auch durch einen String laufen.
>>> name = "Bond"
>>> for zeichen in name:
...    print(zeichen)
... 
B
o
n
d
Hier wird die Variable zeichen bei jedem Durchlauf den nächsten Buchstaben im String bekommen. Bedenken Sie immer, dass Zeichen in Python auch Strings sind.

Schleifenende mit break

Während es für den Einsatz von break in while keine gute Ausrede gibt, ist die Sachlage bei for etwas anders. Da for keine Bedingung im Schleifenkopf hat, ist die Verwendung von break zwar immer noch nicht elegant, aber manchmal nur schwer vermeidbar.

>>> for zeichen in name:
...    if zeichen=='n':
...        break
...    print(zeichen)
... 
B
o

Übungsaufgaben

Stringzahlenauswertung

In der Variablen zahl befindet sich eine Zahl in einem String. Normalerweise würden Sie Zahl mit eval auswerten. Allerdings sind Sie nicht sicher, ob vor oder nach der Zahl noch Buchstaben, wie etwa Einheiten stehen ('EUR 1234' oder '65km').

Schreiben Sie ein Programm, das die im String enthaltene Zahl in eine ganzen Zahlenwert (int) umrechnet und eventuelle Nichtziffern ignoriert.


Der Kurs geht weiter mit Listen.