Zum Inhalt springen
aviral gupta

// B2.3 · ca. 25 Min. · Einstieg

break, continue, pass und else bei Schleifen

Nach dieser Lektion beenden Sie eine Schleife vorzeitig mit break, überspringen eine Runde mit continue, behandeln „nichts gefunden“ mit else an der Schleife und halten mit pass einen Platz frei.

Lektion 3 von 5 in B2 Kontrollfluss

Danach können Sie

  • Eine Schleife mit break vorzeitig beenden und mit continue zur nächsten Runde springen
  • else an einer for- oder while-Schleife nutzen, das nur ohne break läuft
  • Wissen, dass break nur die innerste Schleife verlässt, und pass nutzen, wo ein Block eine Anweisung braucht
  1. Aufwärmen · Aufgabe 1 von 7

    Aufwärmen aus B2.2: Was gibt das aus?

    print(list(range(1, 10, 4)))
  2. Vorhersagen · Aufgabe 2 von 7

    Sagen Sie es vorher, bevor Sie weiterlesen: Was gibt das aus?

    for n in [3, 8, 5, 12, 7]:
        if n > 10:
            break
        print(n, end=" ")
  3. Üben · Aufgabe 3 von 7

    Setzen Sie das Schlüsselwort ein, damit die Schleife Vielfache von 3 überspringt, aber weiterläuft: Sie soll 1 2 4 5 7 ausgeben.

    for n in range(1, 8):
        if n % 3 == 0:
            ____
        print(n, end=" ")
  4. Üben · Aufgabe 4 von 7

    Das else gehört zur for-Schleife. Was gibt das aus?

    for drink in ["tea", "milk", "juice"]:
        if drink == "coffee":
            print("found")
            break
    else:
        print("not found")
  5. Üben · Aufgabe 5 von 7

    Ordnen Sie jeder Anweisung zu, was sie tut.

  6. Denksport · Aufgabe 6 von 7

    Knobelaufgabe. Eine Schleife in einer Schleife. Was gibt das aus?

    count = 0
    for i in range(3):
        for j in range(3):
            if j == 1:
                break
            count = count + 1
    print(count)
  7. Anwenden · Aufgabe 7 von 7

    Mini-Aufgabe. Schreiben Sie ein Ratespiel: Die geheime Zahl ist 7, und es gibt 5 Versuche, jeder mit int(input()) gelesen. Geben Sie nach einem falschen Tipp higher oder lower aus und bei einem Treffer correct, was das Spiel beendet. Sind alle 5 Tipps falsch, geben Sie out of guesses aus. Verwenden Sie break und else an der Schleife.

    Prüfen Sie Ihr Ergebnis anhand dieser Liste

Selbst programmieren

Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.

Ausgearbeitetes Beispiel

Die Bestellungen eines Tages addieren

Die Bestellliste eines Ladens nutzt zwei Markierungen: -1 ist eine stornierte Bestellung, 0 markiert das Tagesende. Das Programm überspringt Stornos mit continue, stoppt an der Endmarke mit break und warnt im else der Schleife, falls die Marke fehlt. Eine zweite Schleife sucht eine große Bestellung und meldet, wenn es keine gibt. Ändern Sie die Liste und starten Sie es erneut.

main.py

# -1 is a cancelled order, 0 marks the end of the day.
orders = [120, -1, 45, 300, -1, 80, 0, 999]

total = 0
count = 0
for amount in orders:
    if amount == -1:
        continue  # cancelled: go on with the next order
    if amount == 0:
        print("End of day reached")
        break  # 999 is never read
    total = total + amount
    count = count + 1
else:
    print("Warning: no end-of-day marker")

print("Orders:", count, "Total:", total)

# Is there an order over 250? else answers "no".
for amount in orders:
    if amount > 250:
        print("Large order:", amount)
        break
else:
    print("No large orders")

Ausführen mit

python main.py

Ausgabe

End of day reached
Orders: 4 Total: 545
Large order: 300
  • continue überspringt die beiden Einträge -1; sie werden weder gezählt noch addiert.
  • break bei 0 beendet die erste Schleife, ihr else gibt die Warnung also nicht aus.
  • Die zweite Schleife stoppt bei der ersten großen Bestellung, 300; 999 wird nie geprüft.
  • Entfernen Sie die 0 aus der Liste: Dann erscheint die Warnung, und 999 zählt zur Summe.
Ändern und ausführen

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Übungen

Übung 1 von 2

Zahlen addieren bis done

Das Programm liest Zeilen, bis done eingegeben wird. Jede andere Zeile ist eine ganze Zahl, nur leere Zeilen werden übersprungen. Geben Sie die Summe der Zahlen aus. Verwenden Sie while True: mit break für done und continue für eine leere Zeile. Bei 5, 10 und done lautet die Ausgabe 15.

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Hinweise
  1. Hinweis 1

    Lesen Sie in while True: pro Runde eine Zeile und entscheiden Sie, was damit geschieht.

  2. Hinweis 2

    Prüfen Sie zuerst auf done und brechen Sie ab. Prüfen Sie dann auf eine leere Zeile und machen Sie mit continue weiter, bevor int(line) aufgerufen wird.

  3. Hinweis 3

    if line == "done": break, dann if line == "": continue, dann total = total + int(line).

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

total = 0

while True:
    line = input()
    if line == "done":
        break
    if line == "":
        continue
    total = total + int(line)

print(total)
Auf dem eigenen Computer ausführen

Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.

main.py

total = 0

while True:
    line = input()
    # Stop at "done"; skip empty lines; add the rest.
    break

print(total)

test_main.py

from learnrun import run_main


def total_for(lines):
    return run_main(lines).strip()


def test_two_numbers():
    """5 und 10 ergeben 15"""
    got = total_for("5\n10\ndone\n")
    assert got == "15", f"bei 5, 10, done gab das Programm {got!r} aus, erwartet: '15'"


def test_done_first():
    """Sofort done ergibt 0"""
    got = total_for("done\n")
    assert got == "0", f"bei done allein gab das Programm {got!r} aus, erwartet: '0'"


def test_empty_lines_skipped():
    """Leere Zeilen werden übersprungen"""
    got = total_for("3\n\n4\n\ndone\n")
    assert got == "7", f"bei 3, leer, 4, leer, done gab das Programm {got!r} aus, erwartet: '7'"

Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.

Programm ausführen:

python main.py

Prüfungen ausführen (learnrun.py muss im selben Ordner liegen):

python learnrun.py test
learnrun.py herunterladen

Übung 2 von 2

Primzahl oder nicht

Das Programm liest eine ganze Zahl n, mindestens 2. Probieren Sie jeden Teiler von 2 bis n - 1. Beim ersten, der n teilt, geben Sie divisible by und den Teiler aus, etwa divisible by 3, und hören auf. Teilt keiner, geben Sie prime aus, mit else an der for-Schleife.

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Hinweise
  1. Hinweis 1

    for d in range(2, n): probiert jeden Teiler; n % d == 0 heißt, d teilt n.

  2. Hinweis 2

    Brechen Sie nach der Ausgabe des Teilers mit break ab, damit nur der kleinste erscheint.

  3. Hinweis 3

    Schreiben Sie else: print("prime") auf der Einrückung von for, nicht auf der des if.

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

n = int(input())

for d in range(2, n):
    if n % d == 0:
        print("divisible by", d)
        break
else:
    print("prime")
Auf dem eigenen Computer ausführen

Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.

main.py

n = int(input())

# Try the divisors 2 to n - 1.
print("prime")

test_main.py

from learnrun import run_main


def check(n):
    return run_main(f"{n}\n").strip()


def test_prime():
    """7 und 2 sind Primzahlen"""
    got = check(7), check(2)
    assert got == ("prime", "prime"), f"bei 7 und 2 gab das Programm {got!r} aus, erwartet: ('prime', 'prime')"


def test_first_divisor():
    """9 ist durch 3 teilbar"""
    got = check(9)
    assert got == "divisible by 3", f"bei 9 gab das Programm {got!r} aus, erwartet: 'divisible by 3'"


def test_smallest_divisor_only():
    """Bei 12 erscheint nur der kleinste Teiler, 2"""
    got = check(12)
    assert got == "divisible by 2", f"bei 12 gab das Programm {got!r} aus, erwartet nur: 'divisible by 2' (fehlt das break?)"


def test_larger():
    """91 ist durch 7 teilbar"""
    got = check(91)
    assert got == "divisible by 7", f"bei 91 gab das Programm {got!r} aus, erwartet: 'divisible by 7'"

Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.

Programm ausführen:

python main.py

Prüfungen ausführen (learnrun.py muss im selben Ordner liegen):

python learnrun.py test
learnrun.py herunterladen

Häufige Fehler

break außerhalb einer Schleife

x = 5
if x > 3:
    break

Was Python ausgibt

SyntaxError: 'break' outside loop

Warum, und die Lösung

break und continue ergeben nur in einer for- oder while-Schleife Sinn. Ein if allein ist keine Schleife, es gibt also nichts zu verlassen. Wollten Sie den Rest des if überspringen, bauen Sie es mit else um.

Ein leerer Schleifenrumpf

for n in range(3):

print("done")

Was Python ausgibt

IndentationError: expected an indented block after 'for' statement on line 1

Warum, und die Lösung

Jede Schleife, jedes if und jedes else braucht mindestens eine eingerückte Anweisung. Ist der Rumpf noch nicht geschrieben, setzen Sie pass hinein: for n in range(3):, darunter eingerückt pass. Dann läuft die Datei, und die Schleife tut einfach nichts.

continue, das aus der Schleife gerutscht ist

for n in range(3):
    print(n)
if n == 2:
    continue

Was Python ausgibt

SyntaxError: 'continue' not properly in loop

Warum, und die Lösung

Das if ist nicht unter for eingerückt, läuft also nach der Schleife, und sein continue steht außerhalb jeder Schleife. Die Einrückung entscheidet, was zur Schleife gehört: Rücken Sie das if um vier Leerzeichen ein, damit es zum Schleifenrumpf gehört.

Python im Browser: Pyodide 314.0.7, MPL-2.0. Lizenz und Quellcode

Abschlussquiz

5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.

Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.

Problem melden

Etwas ist falsch oder unklar? Beschreiben Sie es kurz, dann wird es geprüft und korrigiert.

#

Mindestens 20 Zeichen.

Nur, wenn Sie eine Antwort wünschen.

Kernideen

break beendet, continue überspringt

break beendet die Schleife sofort: Python springt zur ersten Zeile nach der Schleife, die übrigen Elemente werden nie angesehen. continue beendet nur die aktuelle Runde: Der Rest des Rumpfs entfällt, und die Schleife macht mit dem nächsten Element weiter oder prüft ihre while-Bedingung erneut. Beide stehen meist in einem if. Ein häufiges Muster ist while True: mit einem break, wenn die Arbeit getan ist, für Schleifen, deren Ende vorher unbekannt ist, etwa Eingaben lesen, bis quit kommt.

else an einer Schleife heißt „kein break“

Eine for- oder while-Schleife kann einen else-Block haben, eingerückt wie die Schleife selbst. Er läuft, wenn die Schleife regulär endet: Eine for-Schleife hat alle Elemente verbraucht, oder eine while-Bedingung ist falsch geworden. Beendet break die Schleife, entfällt else. So werden Suchen kurz: break beim Fund, „nicht gefunden“ ins else. Lesen Sie es als „falls kein break“. Es gehört zur Schleife, nicht zu einem if in der Schleife.

Verschachtelte Schleifen und pass

break und continue wirken auf die innerste Schleife, in der sie stehen. Bei einer Schleife in einer Schleife beendet break die innere, und die äußere macht mit ihrer nächsten Runde weiter. Python braucht in jedem Block mindestens eine Anweisung. Wenn es noch nichts zu tun gibt, etwa in einem Zweig, den Sie später schreiben, ist pass eine Anweisung, die nichts tut. Anders als continue überspringt pass den Rest des Rumpfs nicht: Die Zeilen danach laufen trotzdem.

Quellen

Zuletzt geprüft am 29. September 2026