Direkt zum Hauptinhalt springen
eLearner.app
Modul 2 · Lektion 3 von 47/36 im Kurs~10 min
Lektionen des Moduls (3/4)

break, continue und else in Schleifen

Innerhalb einer Schleife (sowohl for als auch while) kannst du den normalen Ablauf mit drei Konstrukten ändern:

  • breakbeendet die Schleife sofort.
  • continueüberspringt den Rest des Schleifenkörpers und springt zur nächsten Iteration.
  • else (an der Schleife) — wird ausgeführt, wenn die Schleife ohne ein break endet.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break stoppt die Schleife so schnell wie möglich. Alles nach break im Körper der aktuellen Iteration wird NICHT ausgeführt.

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

Stelle dir continue vor als "gehe zur nächsten Iteration". Es wird verwendet, um Elemente zu filtern, ohne eine zusätzliche Einrückungsebene hinzuzufügen.

else an der Schleife (Python-Idiom)

Eine Python-Besonderheit: Schleifen können auch ein else haben, das nur ausgeführt wird, wenn die Schleife natürlich (ohne break) beendet wurde. Es ist perfekt für Suchen:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Lies es so: "für jedes n in der Liste; wenn du den break-Zweig nimmst, überspringe das else; andernfalls führe das else aus".

Verschachtelte Schleifen: break beendet nur die innerste

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break beendet nur das for y, nicht das for x. Um beide zu beenden, musst du ein Flag oder eine Funktion + return verwenden.

Das ungewöhnliche loop...else-Konstrukt

In Python können sowohl for- als auch while-Schleifen eine optionale else-Klausel enthalten. Der else-Block wird nur ausgeführt, wenn die Schleife normal abgeschlossen wird (d.h. ohne auf eine break-Anweisung zu stoßen). Dies ist sehr hilfreich für Suchalgorithmen (z.B. "Suche nach einem Element: falls gefunden, break; andernfalls melde, dass es nicht gefunden wurde").

Probiere es aus

Übung#python.m2.l3.e1
Versuche: 0Wird geladen…

Gegeben sei die Liste `numbers = [10, 15, 20, 25, 30, 35]`. Finde die erste Zahl, die durch 7 teilbar ist, und weise sie `result` zu. Wenn keine existiert, weise -1 zu.

Editor wird geladen…
Hinweis anzeigen

35 ist die erste (und einzige) Zahl in der Liste, die durch 7 teilbar ist.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#python.m2.l3.e2
Versuche: 0Wird geladen…

Erstelle die Liste `odd_numbers` mit den ungeraden Zahlen von 1 bis 20 (inklusive) unter Verwendung einer for-Schleife über range(1, 21) und continue, um die geraden Zahlen zu überspringen.

Editor wird geladen…
Hinweis anzeigen

Wenn n gerade ist, continue; andernfalls append.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

Übung#python.m2.l3.e3
Versuche: 0Wird geladen…

Schreibe bei der Liste `numbers = [7, 11, 14, 21, 25]` eine `for`-Schleife, um die erste Zahl zu finden, die durch 7 teilbar und außerdem streng größer als 10 is. Wenn du sie findest, speichere sie in `found` und beende die Schleife mit `break`. Evaluiere schließlich `found`.

Editor wird geladen…
Hinweis anzeigen

Prüfe in der Schleife, ob num % 7 == 0 and num > 10:, weise dies found zu und löse break aus.

Lösung nach 3 Versuchen verfügbar