Die For Schleife
In dieser Episode zeige ich wie man in Python die For-Schleife einsetzen kann. Ich beginne mit einfachen Beispielen und werde dann Schritt für Schritt das Beispiel abwandeln und erweitern.
For-Schleifen sind bekannt aus vielen anderen Progammiersprachen. Sowohl in C als auch in Perl, Pascal und Basic finden sich ähnliche Konstrukte, die z.B. über einen begrenzten Wertebereich von A bis Z laufen und einen Laufwert in eine Variable speichern.
Wir beginnen mit der einfachst möglichen For-Schleife.
Hinweis: In Python muss, anders als in anderen Sprachen der Schleifen-Körper nicht durch Begrenzungszeichen eingerahmt werden. Stattdessen wird der Schleifenkörper einfach eine Stufe eingerückt. Dies können 4 Leerzeichen oder ein Tabulatorzeichen sein. Wichtig ist, dass man die Methode der Einrückung nicht in der gleichen Datei mischt.
Beispiel 1: 10 mal eine Zeichenkette ausgeben
Die Python FOR Schleife, hier in Verbindung mit der range()
Funktion. Sie wird hier verwendet um von 0 bis 9 zu zählen. Die Variable n
wird in dem Beispiel nicht verwendet, sie enthält den Zählwert.
for n in range(10): print('Hello World!')
Stattdessen wird einfach 10 Mal die Zeichenkette Hello World!
ausgegeben.
Beispiel 2: Zählen von 1 bis 10
Range Funktion mit geändertem Wertebereich. In diesem Beispiel zählen wir von 1 bis 10. Die Variable n wird durch den For Loop mit Werten aus der range()
Funktion gesetzt. Die Parameter der range()
Funktion sind 1,11. 1 ist der Startwert, 11 der Wert, bei dem range()
die Ausgabe abbricht.
for n in range(1,11): print('Schleifendurchlauf Nummer:',n)
Es ist ein Python Besonderheit, dass der End-Wert niemals von range()
zurückgeliefert wird. Man muss sich den Wert vorstellen als die Abbruch Bedingung von range()
. Wenn 11 erreicht ist, höre auf.
Beispiel 3: Einem einfachen Tuple lesen
Eine Tuple mit einer For Schleife lesen. In diesem Beispiel laufen wir durch ein Tuple namens tup
mit Zeichen. Ein Tuple ist eine nicht veränderliche Liste von Elementen. Der Variablenname wird anstelle der range()
Funktion eingesetzt.
tup = ('a','b','c','d','e','f') for c in tup: print('Wert:',c)
Beispiel 4: Zwei Werte aus einer Datenstruktur lesen
Verschachtelte Daten lesen. In diesem Beispiel laufen wir durch eine Tuple Struktur namens tup
mit Zeichen und Zahlen. Das Äußere Tuple enthält eine Liste aus Tuplen. Jedes der Sub-Tuple enthält je eine Zahl und einen Buchstaben. Man beachte das die For-Schleife nun zwei Variablen enthält. Sie werden mit den Werten aus dem jeweiligen Sub-Tuple befüllt.
tup = ((0,'a'),(1,'b'),(2,'c'),(3,'d'),(4,'e')) for n,c in tup: print('Wert:',n,c)
Beispiel 5: Die Enumerate Funktion
Mit enumerate()
Elemente eines Tuples zählen. In diesem Beispiel laufen wir durch eine einfaches Tuple namens tup
mit Zeichen. Wir setzen dieses Mal aber das Tuple in die Funktion enumerate()
ein. Man beachte das die For-Schleife zwei Variablen n
und c
enthält. Sie werden mit einem Zählwert von Enumerate und einem Wert aus dem Tuple befüllt.
Es ist kein Zufall, das die Ausgaben dieses Beispiels identisch mit den Ausgaben aus Beispiel 4 sind. Die enumerate()
Funktion liefert als Ergebnis ein strukturiertes Tuple wie tup
aus Beispiel 4.
tup = ('a','b','c','d','e') for n,c in enumerate(tup): print('Wert:',n,c)
In der Praxis kommt es häufig vor, dass man eine Positionsmarke innerhalb einer For-Schleife benötigt. In anderen Sprachen löst man das mit einer eigenen Variable außerhalb der For-Schleife initialisiert wird und die bei jedem Durchlauf inkrementiert wird. Das ist bei Python nicht nötig. enumerate()
löst die Aufgabe perfekt.
Beispiel 6: Die Zip Funktion
Mit zip()
zwei Tuples in einer For-Schleife nutzen. In diesem Beispiel laufen wir durch gleich zwei Tuples tup1
und tup2
. Wir setzen beide Tuple in die Funktion zip()
ein. Man beachte das die For-Schleife zwei Variablen c1
und c2
enthält. Sie werden mit den Werten der beiden Tuple befüllt.
Wenn tup1
kürzer wäre als tup2
oder umgekehrt würde die For-Schleife nach der Anzahl der kürzeren Struktur beendet.
tup1 = ('a','b','c','d','e') tup2 = ('z','y','x','t','s') for c1,c2 in zip(tup1,tup2): print('Wert:',c1,c2)
In der Praxis kommt es vor, dass man Werte aus zwei unterschiedlichen Datenstrukturen positions-gleich lesen will, hier hilft die zip()
Funktion. Der Name stammt vom englischen Wort für Reisverschluß. Und genau das macht die Funktion. Sie erzeugt ein verschachteltes Tuple, ein einen Reisverschluss.
Beispiel 7: Range Funktion mit Schrittweite
Eine Schrittweite anders als 1. In diesem Beispiel nutzen wir range()
mit drei Parametern. Der dritte Parameter stellt die Schrittweite des Ranges ein. Das Beispiel zählt alle geraden Zahlen bis 10.
Man kann auch negative Schrittweiten verwenden. Dann zählt range()
rückwärts.
for n in range(2,11,2): print('Wert:',n)
Beispiel 8: Mit Break Ausbrechen
Einen laufende For-Schleife verlassen. In diesem Beispiel nutzen wir eine If-Abfrage um bei einem Zahlenwert von 100
mit dem Kommando break
die laufende For-Schleife vorzeitig zu verlassen. Die Schleife würde ansonsten bis 999
laufen.
Es kann enorme Geschwindigkeitvorteile bringen eine For-Schleife vorzeitig zu verlassen.
for n in range(1000): print('Wert:',n) if n == 100: break
Es sollte beim Anlegen der For-Schleife immer geprüft werden, ob dies möglich ist. Je weniger Durchläufe je schneller das Programm.
Beispiel 9: Mit Continue Auslassen
In einer laufende For-Schleife Code Überspringen. In diesem Beispiel nutzen wir eine If-Abfrage um bei einem gerade Zahlenwert mit dem Kommando continue
die Ausgabe mit print()
zu überspringen.
Dies erlabt es bestimmte Teile der For-Schleife nur bei Bedarf auszuführen.
for n in range(100): if n % 2 == 0: continue print('Wert:',n)
Die For-Schleife gibt alle ungerade Zahlen bis 100 aus.