for
-Schleife in Python
Es gibt weitere Arten von Schleifen neben while
in Python. Je nach Anwendung spart die geschickte Wahl der Schleife Programmierarbeit. Und um das geht es ja beim Programmieren – eine zeitsparende Lösung mit dem geringstmöglichen Aufwand.
Schauen wir uns den Aufbau und die Möglichkeiten der for
-Schleife an. In Python ist die for
-Schleife mit Listen eng verbunden. Daher sollte man sich das Kapitel mit Listen bereits zu Gemüte geführt haben.
Die for
-Schleife durchläuft eine vorgegebene Liste und wir können direkt die Einzelwerte der Liste verwenden.
Nehmen wir wieder unsere Liste mit den Vornamen:
vornamen = ['Axel', 'Elke', 'Martin']
Die Vornamen-Liste soll nun über die for-Schleife durchlaufen werden und jeder Einzelwert ausgegeben werden.
vornamen = ['Axel', 'Elke', 'Martin']
for einzelwert in vornamen:
print(einzelwert)
print("nach der for-Schleife")
Als Ergebnis erhalten wir nun folgende Ausgabe:
Axel
Elke
Martin
nach der for-Schleife
Bemerkenswert ist der große Unterschied der for
-Schleife zu anderen Programmiersprachen. Allerdings ist der Aufbau sehr geschickt, sobald man sich daran gewöhnt hat. Kennt man keine andere Programmiersprache, dann ist die Anwendung der for
-Schleife sehr einfach zu verstehen.
Im Klartext ausgedrückt wäre die for
-Schleife: solange es Einzelwerte in der Liste „vornamen“ gibt, durchlaufe die Schleife (sprich den eingerückten Bereich danach). Dort stehen dann in der Variablen „einzelwert“ der in diesem Durchlauf aktuelle Wert der Liste zur Verfügung.
Im ersten Durchgang wird in der Liste „vorname“ als Wert „Axel“ ausgelesen und in die Variable „einzelwert“ eingetragen. Diese lassen wir dann im Inneren der Schleife über print(einzelwert)
ausgeben.
Dann überprüft Python, ob ein weiterer Wert in der Liste „vornamen“ vorhanden ist. Das ist der Fall. Somit läuft die Schleife eine zweite Runde und die Variable „einzelwert“ wird durch den Wert „Elke“ überschrieben, die dann ausgegeben wird.
Im dritten Durchgang überprüft Python wieder, ob ein weiterer Wert in der Liste „vornamen“ vorhanden ist. Das ist der Fall – wieder wird die Variable „einzelwert“ mit dem Wert „Martin“ überschrieben und im Schleifenkörper ausgegeben.
Wieder überprüft Python, ob ein weiterer Wert in der Liste vorhanden ist. Dies ist nach den ersten 3 Werten nicht mehr der Fall. Unsere Liste verfügt nur über diese 3 Werte. Die for
-Schleife ist beendet.
Dabei ist es egal, ob in der Liste Zeichenketten oder Zahlen oder ein Mischmasch steht.
vornamen = ['Axel', 108, 'Elke', 30, 'Martin', 22]
Wir haben mit dem letzten Beispiel eine gemischte Liste mit Zahlen (Integer) und Zeichenketten (String). Daher müssen wir darauf achten, was wir mit den Ergebnissen anstellen. Mit den Zahlen könnten wir zwar rechnen, aber nicht mit den Strings. Da ist einfach gesunder Menschenverstand angesagt, was man mit den zur Verfügung stehenden Variablen und Inhalten so treibt.
if
-Abfragen in Schleifen
Wir können auch if
-Abfragen in Schleifen einbauen. Dann wird die Einrückung entsprechend tiefer und bei jedem Durchlauf wird diese if
-Bedingung überprüft. In unserem Beispiel wollen wir schauen, ob der Wert z.B. „Axel“ ist und entsprechend darauf reagieren.
Unser bisheriges Programm sieht wie folgt aus:
vornamen = ['Axel', 'Elke', 'Martin']
for einzelwert in vornamen:
print(einzelwert)
print("nach der for-Schleife")
Jetzt gehen wir in die for
-Schleife und überprüfen mit folgender if
-Abfrage:
if einzelwert == "Axel"
print("Ich")
else
print(einzelwert)
Nun müssen wir beide Programmteile zusammenbringen. Hier ist nur die Schachtelung wichtig und dass entsprechend eingerückt wird. Unsere if
-Abfrage muss also tiefer eingerückt werden, da diese ja in den Schleifenkörper von unserer for
-Schleife muss:
vornamen = ['Axel', 'Elke', 'Martin']
for einzelwert in vornamen:
if einzelwert == "Axel":
print("Ich")
else:
print(einzelwert)
print("nach der for-Schleife")
Als Ausgabe erhalten wir nun:
Ich
Elke
Martin
nach der Schleife
Ja, ja ich weiß – der Esel nennt sich immer zuerst (aber woher kommt dieses Sprichwort?).
Tipp für Fortgeschrittene: for
-Ausgabe mit Nummerierung durch enumerate
Öfters möchte man auch den laufenden Index mit ausgeben, der bei 0 startet. Also kommen für den Anfänger Konstruktion wie diese:
vornamen = ['Axel', 'Elke', 'Martin']
# aufwendige Konstruktion
nummer = 0
for einzelwert in vornamen:
print(nummer, einzelwert)
nummer += 1
Als Ergebnis erhalten wir:
0 Axel
1 Elke
2 Martin
Schöner geht es mit enumerate
- in der deutschen Übersetzung bedeutet „enumerate“ einfach „aufzählen“. Und so kommen wir zum exakt gleichen Ergebnis wie oben mit:
vornamen = ['Axel', 'Elke', 'Martin']
for nr, einzelwert in enumerate(vornamen):
print(nr, einzelwert)