EMZETT.
Login

Kurz: Eine Schleife wiederholt Code. Die while-Schleife läuft, solange eine Bedingung wahr ist. Sie prüft die Bedingung vor jedem Durchlauf.

Teil des Kurses Python

Kapitel 12 von 44 im Kurs Python. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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")

Ausgabe:

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)

Ausgabe:

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)

Ausgabe:

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)

Ausgabe:

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")

Ausgabe:

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)

Ausgabe:

'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
  • break beendet die Schleife, continue springt zum nächsten Durchlauf
  • else läuft nur, wenn nicht per break abgebrochen wurde
  • while True + break für Eingabe-Schleifen

Übungsaufgabe

Gib die Zweierpotenzen 1, 2, 4, 8, … aus, solange sie kleiner als 1000 sind.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Bedingungen mit if

Weiter: Die for-Schleife und range()

Alle Kapitel: Python im Überblick