At My Fingertips

Documentation

Neben der bereits bekannten for-Schleife gibt es in Python einen weiteren Schleifentyp, den du in dieser Aktivität kennenlernen wirst.

Die while-Schleife

adaptiert nach Dalwigk, F. (2022). Python für Einsteiger: Programmieren lernen mit dem großen Python Buch - Schritt für Schritt zum Python Profi – auch ohne Vorkenntnisse! Eulogia Verlags GmbH., S. 227ff.

Während die for-Schleife dazu dient, einen fest definierten Bereich von Elementen zu durchlaufen, hängt die while-Schleife von einer Bedingung ab. Aber was genau bedeutet das? Im Grunde funktioniert die while-Schleife ähnlich wie eine if-Anweisung. Bei einer if-Anweisung wird eine Bedingung einmal überprüft, und je nachdem, ob sie wahr oder falsch ist, wird ein bestimmter Codeblock ausgeführt. Bei einer Schleife möchtest du jedoch, dass der Codeblock mehrfach hintereinander ausgeführt wird, ohne ihn zu kopieren.

Um das Konzept der while-Schleife zu verdeutlichen, betrachten wir zuerst die grundlegende Struktur:

while <Bedingung>:
    <Anweisung 1>
    <Anweisung 2>
    ...
    <Anweisung n>

Wie du siehst, ähnelt der Aufbau einer while-Schleife demjenigen einer for-Schleife. Das Schlüsselwort while leitet die while-Schleife ein, gefolgt von einer <Bedingung> in Form eines logischen Ausdrucks. Die <Bedingung> endet mit einem Doppelpunkt. Solange die <Bedingung> wahr (also True) ist, werden alle <Anweisungen> des Körpers sequenziell ausgeführt. Sobald die <Bedingung> hinter dem while nicht mehr wahr ist (also False), wird der Körper nicht mehr ausgeführt und der Code ausserhalb der while-Schleife fortgesetzt. Das lässt sich grafisch mit dem folgenden Flussdiagramm visualisieren:

Flussdiagramm while-Schleife

AntwortDie Ausgabe ist Hallo Welt (auf zwei Zeilen). Die Variable bedingung wird nach der Ausgabe von "Hallo" auf False gesetzt. Dennoch wird der Schleifenkörper vollständig ausgeführt, bevor die Bedingung erneut überprüft wird. Daher wird auch "Welt" ausgegeben, obwohl bedingung bereits False ist.
Loading...

Suchen wir nach einem konkreten Beispiel, für welches wir die while-Schleife verwenden können!

Sagen wir, wir möchten die Zahlen von 1 bis 50 ausgeben. Dazu definieren wir zuerst eine Variable namens zahl und weisen ihr den Wert 1 zu. Man sagt auch, die Variable zahl wird initialisiert.

Gut zu wissen Das Initialisieren einer Variable ist der Prozess der Zuweisung eines Startwerts an diese Variable. Dies geschieht beim Erstellen der Variable, bevor sie verwendet werden kann. Der zugewiesene Wert kann eine Zahl, eine Zeichenkette, ein boolescher Wert (True oder False) oder ein komplexeres Objekt sein, z.B. eine Liste. Durch die Initialisierung wird Speicherplatz im Computer reserviert, um den Wert der Variablen zu speichern. Wenn eine Variable nicht initialisiert wird, kann sie einen unvorhersehbaren Wert enthalten, was zu Fehlern im Code führen kann.
zahl = 1

Wir möchten diese Variable nun innerhalb der while-Schleife ausgeben. Um zu entscheiden, ob die Schleife erneut durchlaufen wird, definieren wir eine <Bedingung>. In unserem Fall sollte die <Bedingung> wahr sein, solange die Variable zahl50 ist:

while zahl <= 50:

Jetzt geben wir den aktuellen Wert der Variable zahl mithilfe der print-Funktion aus:

print(zahl)

Da sich der Wert von zahl nicht von alleine ändert, müssen wir in der while-Schleife die Variable zahl manuell erhöhen, um die gewünschten Zahlen von 1 bis 50 zu erhalten:

zahl += 1   # ist die Kurzform für zahl = zahl + 1

Das vollständige Programm sieht dann so aus:

Loading...

Dieses Beispiel zeigt, dass es nicht immer sinnvoll ist, eine while-Schleife zu verwenden.

Eine entsprechende for-Schleife ist in so einem Fall die bessere Wahl, da sie den Code kompakter und übersichtlicher gestaltet:

Loading...

Nun fragst du dich zu Recht, wofür sich denn eine while-Schleife tatsächlich besser eignet.

Das wohl beste Beispiel ist die...

Suche eines Wertes in einer Liste

Stell dir vor, du müsstest in einer langen Liste nach einem bestimmten Namen suchen. Würdest du wirklich jedes einzelne Element durchgehen? Nein! Du durchläufst die Liste nur so lange, bis du den gesuchten Namen gefunden hast oder bis du am Ende der Liste angelangt bist.

Diese Methode ist effizienter, weil du die Suche abbrechen kannst, sobald du den Namen gefunden hast. Du musst dann nicht noch den Rest der Liste durchsuchen, was Zeit und Mühe spart.

Ein kurzes Programm in Python könnte wie folgt aussehen:

Loading...

Studiere das Programm genau und ersetze die ... durch prägnante Erklärungen. Welche Begriffe/Codestücke sind zwar neu, aber für dich dennoch verständlich? Welche sind noch unklar?

Für das Arbeiten mit Grafiken der PyTamaro-Bibliothek ist die while-Schleife zwar durchaus einsetzbar, aber nicht die erste Wahl, da dasselbe mittels for-Schleife/n in der Regel kompakter und übersichtlicher programmiert werden kann.

Nachfolgend sei exemplarisch das Programm für eine Animation einer im Wechsel auf- und untergehenden Sonne gezeigt - einmal mit while-Schleifen und einmal mit for-Schleifen.

Loading...
Loading...

Was du gelernt hast

Du hast mit der while-Schleife eine Schleifenstruktur kennengelernt, die verwendet wird, um einen Codeblock so lange wiederholt auszuführen, wie eine bestimmte Bedingung wahr ist. Mit dem Schlüsselwort break kann eine Schleife vorzeitig verlassen werden. Damit lässt sich bspw. die Suche nach einem Wert in einer Liste implementieren.

In der Regel ist es jedoch so, dass für die meisten Problemstellungen, die Schleifenstrukturen erfordern, inklusive der Grafikkomposition, die for-Schleife besser geeignet ist. Sie ermöglicht kompakteren und damit übersichtlicheren Code.


This activity has been created by Lichtsteiner and is licensed under CC BY-SA 4.0.

Bedingte Schleifen

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)