Die for-Schleife läuft nacheinander über die Elemente einer Sammlung (Liste, Text, Dictionary, ...). Das ist in Python die häufigste Schleife.
farben = ["rot", "grün", "blau"]
for farbe in farben:
print(farbe)rot grün blau
Die Variable farbe nimmt in jedem Durchlauf den nächsten Wert an. Auch Texte kannst du Zeichen für Zeichen durchlaufen:
for buchstabe in "Hallo":
print(buchstabe, end=" ")
print()H a l l o
range(): Zahlenfolgen
range() erzeugt eine Folge von Zahlen. Das Ende ist wie beim Slicing nicht enthalten:
| Aufruf | Zahlen |
|---|---|
range(5) | 0, 1, 2, 3, 4 |
range(2, 6) | 2, 3, 4, 5 |
range(0, 10, 3) | 0, 3, 6, 9 |
range(5, 0, -1) | 5, 4, 3, 2, 1 |
for i in range(1, 4):
print("Runde", i)
for i in range(10, 0, -3):
print(i)
print(list(range(5)))Runde 1 Runde 2 Runde 3 10 7 4 1 [0, 1, 2, 3, 4]
Mit Index durchlaufen: enumerate()
Brauchst du Element und Position, nimm enumerate():
namen = ["Mia", "Tom", "Lea"]
for platz, name in enumerate(namen, start=1):
print(f"{platz}. {name}")1. Mia 2. Tom 3. Lea
Zwei Listen parallel: zip()
fragen = ["Hauptstadt von Deutschland?", "2 + 2?"]
antworten = ["Berlin", "4"]
for frage, antwort in zip(fragen, antworten):
print(frage, "->", antwort)Hauptstadt von Deutschland? -> Berlin 2 + 2? -> 4
Verschachtelte Schleifen
Eine Schleife in einer Schleife durchläuft alle Kombinationen, zum Beispiel für das kleine Einmaleins:
for zeile in range(1, 4):
for spalte in range(1, 4):
print(zeile * spalte, end="\t")
print()1 2 3 2 4 6 3 6 9
break, continue und else
Wie bei while beendet break die Schleife, continue springt zum nächsten Element, und else läuft, wenn kein break aufgetreten ist. Das ist praktisch für Suchen:
zahlen = [3, 8, 12, 5]
for z in zahlen:
if z > 10:
print("Gefunden:", z)
break
else:
print("Keine Zahl über 10")Gefunden: 12
Schleifenvariable und Sammlung ändern
Verändere eine Liste nicht, während du sie durchläufst, das führt zu schwer zu findenden Fehlern. Erzeuge stattdessen eine neue Liste (siehe List Comprehensions):
zahlen = [1, 2, 3, 4, 5, 6]
gerade = []
for z in zahlen:
if z % 2 == 0:
gerade.append(z)
print(gerade)[2, 4, 6]
Merke
for element in sammlung:durchläuft jedes Elementrange(start, ende, schritt): das Ende ist ausgeschlossenenumerate()liefert Index und Element,zip()führt Listen parallel- Verschachtelte Schleifen durchlaufen alle Kombinationen
break,continueundelsefunktionieren wie beiwhile
Aufgabe
Gib die ersten zehn Quadratzahlen (1, 4, 9, ...) aus und berechne ihre Summe.