PCEP-30-02 1.0 – Computerprogrammierung und Grundlagen von Python (18 %)
PCEP-30-02 1.1 - Grundlegende Begriffe und Definitionen verstehen
PCEP-30-02 1.2 – Logik und Struktur von Python verstehen
PCEP-30-02 1.3 – Literale und Variablen in Code einführen und verschiedene Zahlensysteme nutzen
PCEP-30-02 1.4 – Operatoren und Datentypen passend zum Problem wählen
PCEP-30-02 1.5 – Eingabe-/Ausgabe-Operationen in der Konsole durchführen
PCEP-30-02 2.0 – Kontrollfluss – Bedingte Blöcke und Schleifen (29%)
PCEP-30-02 2.1 – Entscheidungen treffen und den Programmfluss mit „if“ steuern
PCEP-30-02 3.0 – Datenkollektionen – Tupel, Dictionaries, Listen und Strings (25%)
PCEP-30-02 3.1 – Daten mit Listen sammeln und verarbeiten
PCEP-30-02 3.3 – Daten mit Dictionaries sammeln und verarbeiten
PCEP-30-02 3.4 – Mit Strings arbeiten
PCEP-30-02 4.0 – Funktionen und Ausnahmen (28%)
PCEP-30-02 4.3 – Python Built-In Exceptions Hierarchie
PCEP-30-02 4.4 – Grundlagen der Fehlerbehandlung in Python

Python: „while-else“-Schleife

Einleitung in den while-else-Loop in Python

Python bietet einige interessante Konstruktionen für Schleifen, die in anderen Programmiersprachen weniger bekannt sind. Eine solche Funktionalität ist der Einsatz einer else-Klausel in Kombination mit der while-Schleife. Der while-else-Block bietet eine verständliche Möglichkeit, eine bedingte Schleife mit optionalem Verhalten zu implementieren, das nur dann ausgeführt wird, wenn die Schleife nicht durch eine break-Anweisung unterbrochen wird.

Grundstruktur von while in Python

Der while-Loop ist in Python eine Schleife, die so lange wiederholt wird, wie eine gegebene Bedingung True bleibt. Hier ist die grundlegende Syntax:


while Bedingung:
# Codeblock, der ausgeführt wird, solange die Bedingung True ist

Ein Beispiel:


x = 5
while x > 0:
print(x)
x -= 1

Die Ausgabe wäre:


5
4
3
2
1

Sobald die Bedingung x > 0 nicht mehr erfüllt ist (hier, wenn x == 0), wird die Schleife beendet.

Was ist nun das „else“ in diesem Kontext?

Die Besonderheit der „while-else“-Schleife besteht darin, dass der else-Block ausgeführt wird, wenn die Schleife normal beendet wird – das bedeutet, sie läuft durch, ohne dass eine break-Anweisung sie unterbrochen hat.

Die allgemeine Syntax lautet wie folgt:


while Bedingung:
# Schleifenkörper
else:
# Dieser Block wird ausgeführt, wenn die Schleife nicht durch break unterbrochen wurde

Beispiel für die Verwendung von while-else

Sehen wir uns ein Beispiel an, um die Arbeitsweise besser zu verstehen:


x = 0
while x < 5:
print(x)
x += 1
else:
print("Die Schleife wurde vollständig abgeschlossen.")

Erklärung:

  1. Die Schleife beginnt mit x = 0 und wird iterieren, solange x < 5 ist.
  2. Sobald die Bedingung x < 5 nicht mehr wahr ist (nach fünf Iterationen), wird der else-Block ausgeführt.

Ausgabe:


0
1
2
3
4
Die Schleife wurde vollständig abgeschlossen.

Unterschied zwischen break und while-else

Die break-Anweisung kann eine Schleife vorzeitig beenden. Wenn dies passiert, wird der else-Block nicht ausgeführt. Schauen wir uns das anhand eines Beispiels an:


x = 0
while x < 5:
print(x)
if x == 3:
print("Schleife wird durch break beendet.")
break
x += 1
else:
print("Die Schleife wurde vollständig abgeschlossen.")

Erklärung:

  1. Die Schleife läuft erneut mit der Bedingung x < 5.
  2. Sobald jedoch x == 3 ist, wird break aufgerufen, wodurch die Schleife vorzeitig beendet wird.
  3. Da die Schleife mit break beendet wurde, wird der else-Block nicht ausgeführt.

Ausgabe:


0
1
2
3
Schleife wird durch break beendet.

Praktische Anwendung von while-else

Die while-else-Konstruktion ist besonders nützlich in Situationen, in denen man überprüfen möchte, ob eine Schleife vollständig durchlaufen wurde oder nicht – beispielsweise bei der Suche nach einem Element in einer Datenstruktur.

Beispiel 1: Suche in einer Liste


nums = [1, 2, 3, 4, 5]
key = 7
i = 0
while i < len(nums):
if nums[i] == key:
print(f"{key} gefunden!")
break
i += 1
else:
print(f"{key} ist nicht in der Liste.")

Ausgabe:


7 ist nicht in der Liste.

In diesem Beispiel durchläuft die Schleife alle Elemente der Liste. Da der Wert 7 nicht gefunden wird und break nicht ausgeführt wird, wird der else-Block aktiviert.


Häufige Fehler und Fallstricke

1. Verwendung ohne Bedingung

Wenn die Schleifenbedingung nie erfüllt ist (z. B. False am Anfang), wird der else-Block sofort ausgeführt.


while False:
print("Dies wird nie ausgeführt.")
else:
print("Der else-Block wird ausgeführt.")

Ausgabe:


Der else-Block wird ausgeführt.

2. Missverständnis der break-Rolle

Ein häufiges Missverständnis ist, dass der else-Block unabhängig von break ausgeführt wird. Beachte, dass else nur ausgeführt wird, wenn die Schleife nicht durch break unterbrochen wurde.


Fazit

Die „while-else“-Schleife in Python ist eine leistungsstarke und elegante Möglichkeit, optionales Verhalten zu implementieren, das auf den Abschluss einer Schleife abgestimmt ist. Während else in erster Linie mit if in Verbindung gebracht wird, zeigt seine Verwendung mit Schleifen die Flexibilität von Python.

Durch die Kombination von break und else kann man klarere, lesbarere Logik implementieren, insbesondere bei iterativen Prozessen wie Suchen oder anderen Algorithmen. Die richtige Verwendung dieser Konstruktion kann deinen Code eleganter und gleichzeitig effizienter machen.