Hast du schon einmal von der Python while-Schleife gehört? Schleifen sind grundlegendes Konzept beim Coden und ermöglichen Wiederholungen. Die while-Schleife ist die einfachste Form davon. In diesem Artikel schauen wir uns die while-Schleife genauer an.
Ausführung von Wiederholungen mit Python while-Schleifen
Die Idee hinter der Python while-Schleife ist, dass sie eine oder mehrere Anweisungen so oft ausführt, bis eine bestimmte Bedingung erfüllt ist. Erst dann wird die Schleife abgebrochen. Diese Bedingung wird Abbruchbedingung genannt. Wie in anderen Programmiersprachen gibt es auch in Python verschiedene Arten von Schleifen. Du hast vielleicht bereits von der Python For-Schleife gehört. Der Aufbau der while-Schleife ist jedoch einfacher, wie du im folgenden Code sehen kannst:
In diesem Beispiel wird von eins bis 100 gezählt und der aktuelle Stand ausgegeben. Die Variable i
wird zu Beginn auf den Startwert eins gesetzt. Im Schleifenkopf, also dem Teil nach dem while
, wird die Abbruchbedingung festgelegt: i <= 100
. Die while-Schleife wiederholt sich solange, wie i
kleiner oder gleich 100 ist.
Die beiden eingerückten Zeilen darunter sind der Schleifenkörper und werden bei jeder Wiederholung ausgeführt. Die Variable i
wird in der letzten Zeile um eins erhöht. Es funktioniert übrigens auch, wenn du die Python Variablen anders benennst. Das i
stammt aus der Mathematik. Es ist jedoch empfehlenswert, aussagekräftige Namen für die Variable zu verwenden. Erst wenn die Bedingung erfüllt ist, wird die Zeile mit print()
ausgeführt. Weitere Informationen zu diesem Thema findest du auf der Seite der Universität Paderborn.
While-Schleife in Python: Break und Continue
Normalerweise läuft die Python while-Schleife solange, bis die Abbruchbedingung erfüllt ist. Allerdings gibt es zwei Möglichkeiten, die Schleife vorzeitig zu beenden: break
und continue
. Mit dem Schlüsselwort break
kann die Schleife beendet werden, meist in Verbindung mit der Überprüfung einer weiteren Bedingung. Es macht wenig Sinn, break
ohne Bedingung zu verwenden, da die Schleife dann komplett weggelassen werden könnte.
Im folgenden Beispiel soll der Benutzer eine Zufallszahl zwischen 1 und 10 erraten. Er hat dazu fünf Versuche, die mit Hilfe einer Schleife programmiert wurden. Wenn er die richtige Zahl rät, wird die Wiederholung mit break
abgebrochen und das Programm endet vorzeitig. Andernfalls wird die Variable versuche
um 1 erhöht und es geht mit dem nächsten Durchlauf weiter:
Achte beim Nachvollziehen des Beispiels genau auf die Einrückungen. Wie verändert sich die Logik des Programms, wenn du die letzte Zeile, zusammen mit dem darüberliegenden break
, einrückst? Eine ähnliche Funktion wie break
erfüllt das Schlüsselwort continue
. Es bricht die Schleife nicht komplett ab, sondern macht mit dem nächsten Durchgang weiter. Der Code, der nach dem continue
steht, wird also nicht mehr ausgeführt.
Schleifen in Schleifen
Wenn die Schleifen verschachtelt sind, also eine Schleife in einer anderen enthalten ist, wird es etwas knifflig mit break
und continue
. Schauen wir uns dazu das folgende Beispiel an:
Hier wird fünfmal bis 10 gezählt. Die äußere Schleife, mit der Zählvariable x
, ermöglicht die fünffache Wiederholung. Die innere Schleife, mit der Zählvariable y
, zählt von eins bis 10. Ein break
oder continue
in der inneren Schleife wirkt sich nur auf diese aus. Wenn break
verwendet wird, setzt die äußere Schleife mit dem nächsten Durchgang fort. Die innere Schleife wird abgebrochen. Erst ein break
im Wirkungsbereich der äußeren Schleife würde diese ebenfalls beenden. Das mag zwar kompliziert klingen, aber es lohnt sich, dies im Debugger der Python IDLE oder der Entwicklungsumgebung Thonny auszuprobieren, um das Prinzip des Codings besser zu verstehen.
Eine Alternative: else
Wenn du dich bereits mit Bedingungen beschäftigt hast, kennst du das Schlüsselwort else
. Mit else
kannst du einen alternativen Weg beschreiten, falls eine Bedingung nicht erfüllt ist. In Python gibt es auch ein else
für die while-Schleife. Das ist eine Besonderheit, die es in anderen Programmiersprachen nicht gibt. Mit else
lässt sich, ähnlich wie bei der if
-Bedingung, eine Alternative formulieren, falls die Bedingung hinter while
nicht mehr erfüllt ist. Das folgende Beispiel zeigt dies:
Es wird die Variable i
hochgezählt, solange i <= 100
ist. Wenn i
nicht mehr <= 100
ist, wird der else
-Zweig ausgeführt. Wichtig ist zu verstehen, dass dies nicht dasselbe ist wie das print
ohne Einrückung nach der Schleife. In diesem Beispiel ist die Ausgabe zwar die gleiche, aber es kann auch anders sein. Wenn beispielsweise nach dem Hochzählen (i = i + 1
) ein break
verwendet wird, wird der else
-Zweig nicht ausgeführt. Das print
ohne Einrückung wird jedoch auf jeden Fall ausgeführt. Wenn du dies ausprobieren möchtest, kannst du Python-Kommentare verwenden, indem du die Zeile mit break
auskommentierst.
Endlosschleifen erstellen
Kommen wir nun zur Endlosschleife. Das ist eine Schleife ohne Abbruchbedingung, die sich einfach immer weiter wiederholt, solange das Programm läuft. Das folgende Beispiel zählt die Variable i
fortlaufend hoch:
In der Entwicklungsumgebung Thonny gibt es einen Stop-Button, um das Programm zu beenden. In der Python-Entwicklungsumgebung IDLE hilft hingegen der Menüpunkt “Shell” > “Interrupt Execution”.
Die Idee einer Endlosschleife mag zunächst merkwürdig klingen, kann aber Sinn machen. Stell dir vor, du möchtest eine Server-Anwendung programmieren, die eingehende Anfragen aufzeichnet. Der einfachste Weg, dies zu realisieren, besteht darin, den Code in eine Endlosschleife zu packen. Dadurch kannst du regelmäßig prüfen, ob Anfragen eingehen. Auf ähnliche Weise kannst du Eingaben von der Tastatur lesen, bis ein vereinbartes Abbruchzeichen erscheint. Im folgenden Beispiel werden Zeichen von der Standardeingabe (sys.stdin
) eingelesen und in der Variable text
aneinandergehängt, bis die Eingabetaste gedrückt wird. Dies wird im Programm durch ein Newline-Zeichen (n
) erkannt. Wenn es auftritt, wird die Endlosschleife mit break
abgebrochen. Es ist zu beachten, dass Endlosschleifen den Prozessor belasten. Daher sollte man dem Prozessor mit time.sleep()
kleine Pausen gönnen, um ihn nicht ständig unter hoher Last arbeiten zu lassen.
Damit haben wir das Wichtigste zur Python while-Schleife besprochen. Wenn etwas nicht wie erwartet funktioniert, kann es hilfreich sein, den Debugger in IDLE oder Thonny zu verwenden, um den Code Schritt für Schritt zu überprüfen. So lassen sich unerwartete Sprünge und Werte der Zählvariablen erkennen. Wenn du mehr über Python lernen möchtest, schau in unserem Wissensmagazin vorbei. Dort findest du viele Tutorials, die dir helfen, mit dieser Coding-Sprache einzusteigen.