Hast Du schon einmal von der Python while-Schleife gehört? Schleifen, also Wiederholungen, gehören zu den grundlegenden Konzepten beim Coden. Die while-Schleife ist dabei die einfachste Schleifenform. Deshalb schauen wir sie uns in diesem Artikel mal genauer an.
Mit Python while-Schleifen Wiederholungen ausführen
Die Idee hinter Python while-Schleifen ist, dass sie eine oder mehrere Anweisungen so oft ausführen, bis eine Bedingung erfüllt ist. Dann wird die Schleife abgebrochen. Diese Bedingung heißt deshalb Abbruchbedingung. Wie auch in anderen Programmiersprachen gibt es verschiedene Arten von Schleifen in Python. Du hast ja vielleicht bereits von der Python For Schleife gehört. Der Aufbau der while-Schleife ist jedoch einfacher, wie Du am folgenden Codestück erkennst:
In diesem Beispiel wird von eins bis 100 gezählt und jeweils der aktuelle Stand ausgegeben. Die Variable i ist zu Beginn auf einen Startwert gesetzt, hier ist das der Wert eins. Dann wird im Schleifenkopf (das ist der Teil hinter dem while) die Abbruchbedingung formuliert: i <= 100. Die while-Schleife wiederholt sich also so lange, wie i kleiner oder gleich 100 ist.
Die beiden eingerückten Zeilen darunter sind der Schleifenkörper, sie werden bei jeder Wiederholung in Python ausgeführt. Den Wert i nennt man auch Zählvariable oder Laufvariable, sie wird hier in der letzten Zeile um eins erhöht. Das funktioniert übrigens auch, wenn Du die Python Variablen anders nennst. Das i kommt aus der Mathematik, wenn Du jedoch einen sinnvollen Namen für die Variable vergeben kannst, ist das auch O.K. (eigentlich sogar noch besser). Erst wenn die Bedingung erfüllt ist, wird die Zeile mit dem print() ausgeführt. Mehr über dieses Thema erfährst Du übrigens auf der Seite der Universität Paderborn.
while-Schleife in Python: Break und Continue
Während die Python while-Schleife läuft, kann sie nichts stoppen, bis die Abbruchbedingung erfüllt ist. Na ja, fast nix. Mit dem Schlüsselwort break kann man sie nämlich beenden. Dies geschieht meist in Zusammenhang mit der Überprüfung einer weiteren Bedingung. Es macht wenig Sinn break ohne Bedingung aufzurufen, dann hätte man die Schleife ja gleich weglassen können.
Im folgenden Beispiel soll der Benutzer eine Zufallszahl zwischen 1 und 10 erraten. Er hat dazu fünf Versuche, die mithilfe einer Schleife programmiert wurden. Rät er den richtigen Wert, wird die Wiederholung mit break abgebrochen. Das Programm endet dann vorzeitig. Wenn nicht, erhöht sich die Variable versuche um 1 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, genau wie das break darüber, einrückst? Mit break eng verwandt ist das Schlüsselwort continue. Dabei bricht die Schleife allerdings 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
Etwas kniffelig wird es mit break und continue, wenn die Schleifen verschachtelt sind. Verschachtelt bedeutet, dass eine Schleife in einer anderen enthalten ist. Schau Dir dazu das folgende Beispiel an:
Hier wird fünfmal bis 10 gezählt. Die fünffache Wiederholung wird mit der äußeren Schleife realisiert, die x als Zählvariable enthält. Das Zählen von eins bis 10 erledigt die innere Schleife, also die mit dem y als Zählvariable. Ein break oder continue in der inneren Schleife wirkt auch nur auf die Innere. Bei einem break, hier im Kommentar angedeutet, wird also mit dem nächsten Durchgang der äußeren Schleife weitergemacht. Die Innere wird abgebrochen. Erst ein break im Wirkungsbereich der Äußeren würde auch diese beenden. Kompliziert? Es lohnt sich das ein wenig im Debugger der Python IDLE oder der Entwicklungsumgebung Thonny auszuprobieren, um das Prinzip beim Coding richtig zu verstehen.
Eine Alternative: else
Wenn Du Dich bereits mit Bedingungen beschäftigt hast, ist Dir das Schlüsselwort else geläufig. Mit else kann man als Folge einer Bedingung einen alternativen Weg beschreiten. In Python gibt es auch ein else für die while-Schleife. Das ist eine Besonderheit, die es so in anderen Coding-Sprachen nicht gibt. Mit else lässt sich, wie bei der if-Bedingung, eine Alternative für den Fall formulieren, dass die Bedingung hinter while nicht mehr erfüllt ist. Das folgende Codestück zeigt ein Beispiel dafür. Es wird die Variable i von eins hochgezählt, so lange i <= 100 ist. Wenn i nicht mehr <= 100 ist, wird der else-Zweig ausgeführt:
Wichtig ist, zu verstehen, dass dies nicht das Gleiche ist, wie das print ohne Einrückung hinter die Schleife zu stellen. Also so:
In diesem Beispiel ist die Ausgabe zwar die gleiche, aber das kann auch anders sein. Bricht man beispielsweise nach dem Hochzählen (i = i + 1) mit break ab, wird der else-Zweig nicht ausgeführt. Das print ohne Einrückung wird aber auf jeden Fall ausgeführt. Wenn Du das ausprobieren möchtest, solltest Du auf Python Kommentare zurückgreifen. Du musst also die Zeile, die das break enthält, auskommentieren. Hierzu setzt Du ein Kommentarzeichen vor das break.
Endlosschleife erstellen
Kommen wir nun zur Endlosschleife. Das ist eine Schleife ohne Abbruchbruchbedingung. Sie wiederholt sich einfach immer weiter, solange das Programm läuft. Das folgende Beispiel zählt die Variable i hoch und hört nicht auf:
In der IDE Thonny gibt es einen Stop-Button, mit dem Du das Programm beenden kannst. In der Python Entwicklungsumgebung IDLE hilft hingegen der Menüpunkt Shell > Interrupt Execution.
Die Idee einer Endlosschleife klingt erst mal merkwürdig, kann aber Sinn machen. Stell Dir vor, Du sollst eine Server-Anwendung programmieren, die eingehende Anfragen aufzeichnet. Der einfachste Weg so etwas zu realisieren ist es, den Code in eine Endlosschleife zu verpacken. Denn dadurch kannst Du dann regelmäßig prüfen, ob Anfragen hereinkommen. 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 man Return drückt. Man erkennt das im Programm am Newline-Zeichen (\n). Wenn es auftaucht, bricht die Endlosschleife mit break ab:
Wie Du Dir vorstellen kannst, belasten Endlosschleifen den Prozessor. Deshalb sollte man dem Prozessor mit time.sleep() zwischendurch kleine Pausen gönnen, damit er nicht ständig unter hoher Last arbeitet.
Damit haben wir das Wichtigste zur Python while-Schleife besprochen. Wenn bei Dir etwas nicht wie erwartet funktioniert, ist es hilfreich, mit dem Debugger in IDLE oder Thonny durch den Code zu “steppen”. Dabei erkennt man unerwartete Sprünge und sieht, welche Werte die Zählvariablen haben. Wenn Du mehr über Python lernen willst, dann schau in unserem Wissensmagazin vorbei. Wir helfen Dir mit vielen Tutorials – angefangen beim Python Download – beim Einstieg in die Arbeit mit dieser Coding-Sprache.
FAQs – Python while-Schleife
Sie wiederholt Anweisungen bzw. Codepakete. Dabei wird die Wiederholung so lange ausgeführt, bis eine Bedingung erreicht ist. Falls Du Code einmal nicht wiederholen, sondern kopieren willst, dann solltest Du auf Python Funktionen zurückgreifen.
Die while-Schleife kommt immer dann zum Einsatz, wenn eine Anweisung auf eine große Datenmenge angewendet werden soll: etwa beim Verwalten von Personendaten oder bei Listen.
Der Wert true gilt als sogenannter Wahrheitswert. So lange dieser Wert ausgegeben wird, wiederholt die Schleife die entsprechende Anweisung.