Eine Schleife wiederholt Code. Die while-Schleife läuft, solange eine Bedingung wahr ist. Sie prüft die Bedingung vor jedem Durchlauf.
zaehler = 1
while zaehler <= 5:
print("Durchlauf", zaehler)
zaehler += 1
print("Fertig")Durchlauf 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Fertig
Wichtig ist, dass sich innerhalb der Schleife etwas ändert (hier zaehler += 1). Sonst bleibt die Bedingung für immer wahr, und das Programm läuft endlos. Mit Strg + C brichst du ein hängendes Programm im Terminal ab.
Summen und Zähler
summe = 0
zahl = 1
while zahl <= 100:
summe += zahl
zahl += 1
print("Summe von 1 bis 100:", summe)Summe von 1 bis 100: 5050
break: Schleife vorzeitig verlassen
n = 0
while True: # scheinbar endlos ...
n += 1
if n * n > 200:
break # ... wird hier beendet
print("Erste Zahl mit Quadrat über 200:", n)Erste Zahl mit Quadrat über 200: 15
while True: zusammen mit break ist ein verbreitetes Muster, wenn man erst mitten im Durchlauf weiß, ob man aufhören muss, etwa bei Benutzereingaben.
continue: zum nächsten Durchlauf springen
i = 0
while i < 8:
i += 1
if i % 2 == 0:
continue # gerade Zahlen überspringen
print(i)1 3 5 7
else bei Schleifen
Ein else-Block läuft, wenn die Schleife normal endet, also nicht durch break:
versuche = 0
while versuche < 3:
versuche += 1
else:
print("Schleife ohne break beendet nach", versuche, "Versuchen")Schleife ohne break beendet nach 3 Versuchen
Eingabe-Schleife (Muster)
Dieses Muster fragt so lange nach, bis die Eingabe stimmt (hier mit simulierten Eingaben, damit das Beispiel ohne Tastatur läuft):
antworten = iter(["abc", "-4", "7"]) # simuliert, was der Benutzer tippt
while True:
eingabe = next(antworten)
if eingabe.isdigit():
zahl = int(eingabe)
break
print(f"'{eingabe}' ist keine gültige Zahl, bitte erneut")
print("Eingegeben:", zahl)'abc' ist keine gültige Zahl, bitte erneut '-4' ist keine gültige Zahl, bitte erneut Eingegeben: 7
Im echten Programm steht dort eingabe = input("Zahl: ").
Merke
while bedingung:wiederholt, solange die Bedingung wahr ist- In der Schleife muss sich etwas ändern, sonst läuft sie endlos
breakbeendet die Schleife,continuespringt zum nächsten Durchlaufelseläuft nur, wenn nicht perbreakabgebrochen wurdewhile True+breakfür Eingabe-Schleifen
Aufgabe
Gib die Zweierpotenzen 1, 2, 4, 8, ... aus, solange sie kleiner als 1000 sind.