Zum Inhalt springen
aviral gupta

// B2.2 · ca. 29 Min. · Einstieg

for-Schleifen und range()

Nach dieser Lektion durchlaufen Sie Listen und Strings mit for, zählen mit range(start, stop, step), nummerieren mit enumerate und ändern eine Liste sicher, während Sie sie durchlaufen.

Lektion 2 von 5 in B2 Kontrollfluss

Danach können Sie

  • Die Elemente einer Liste oder eines Strings mit for durchlaufen
  • Zahlenfolgen mit range(start, stop, step) erzeugen und wissen, dass stop nicht dazugehört
  • Elemente mit enumerate nummerieren und über eine Kopie laufen, wenn die Schleife die Liste ändert
  1. Aufwärmen · Aufgabe 1 von 7

    Aufwärmen aus B1.5: Was gibt diese while-Schleife aus?

    i = 0
    while i < 3:
        print(i, end=" ")
        i = i + 1
  2. Vorhersagen · Aufgabe 2 von 7

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

    total = 0
    for n in [3, 5, 7]:
        total = total + n
    print(total)
  3. Üben · Aufgabe 3 von 7

    Setzen Sie den stop-Wert ein, damit die Schleife 1 2 3 4 5 ausgibt.

    for i in range(1, ____):
        print(i, end=" ")
    for i in range(1, ):
  4. Üben · Aufgabe 4 von 7

    Ordnen Sie jedem range die Zahlen zu, die es erzeugt.

  5. Üben · Aufgabe 5 von 7

    enumerate nummeriert die Elemente. Was gibt das aus?

    names = ["Ada", "Linus", "Guido"]
    for number, name in enumerate(names, start=1):
        if name == "Linus":
            print(number)
  6. Denksport · Aufgabe 6 von 7

    Knobelaufgabe. numbers.remove(n) löscht das erste Element mit dem Wert n aus der Liste. Was gibt das aus?

    numbers = [1, 2, 2, 3]
    for n in numbers:
        if n == 2:
            numbers.remove(n)
    print(numbers)
  7. Anwenden · Aufgabe 7 von 7

    Mini-Aufgabe. Schreiben Sie ein Programm, das mit int(input()) eine Zahl liest und ihr Einmaleins von 1 bis 10 ausgibt, eine Zeile pro Rechnung, etwa 7 x 3 = 21. Verwenden Sie eine for-Schleife über range und prüfen Sie, dass die letzte Zeile die zehnte ist.

    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

Ein Kassenbon

Ein Kassenbon führt Artikel und Preise eines Einkaufs in zwei Listen mit derselben Reihenfolge. Das Programm nummeriert jede Zeile mit enumerate, addiert die Summe und prüft dann mit einem range mit Schrittweite jeden zweiten Artikel. Ändern Sie die Listen oben und starten Sie es erneut.

main.py

# Items and their prices, in the same order.
items = ["bread", "milk", "apples", "coffee"]
prices = [2.49, 1.19, 3.5, 6.99]

total = 0.0
for number, item in enumerate(items, start=1):
    price = prices[number - 1]
    print(number, item, price)
    total = total + price

print("Items:", len(items))
print("Total:", round(total, 2))

# Every second item, from the first: range with a step.
for i in range(0, len(items), 2):
    print("Checked:", items[i])

Ausführen mit

python main.py

Ausgabe

1 bread 2.49
2 milk 1.19
3 apples 3.5
4 coffee 6.99
Items: 4
Total: 14.17
Checked: bread
Checked: apples
  • enumerate(items, start=1) nummeriert ab 1, der Preis steht also an Position number - 1.
  • round(total, 2) glättet die float-Summe; beim Addieren von floats bleiben oft winzige Rundungsfehler.
  • range(0, len(items), 2) liefert 0 und 2: Der stop-Wert 4 gehört nie dazu.
  • Die beiden print-Zeilen nach der ersten Schleife sind nicht eingerückt und laufen einmal.
Ä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 3

Von 1 bis n addieren

Das Programm liest eine ganze Zahl n. Geben Sie die Summe 1 + 2 + … + n aus, mit einer for-Schleife über range. Bei 5 lautet die Ausgabe 15, bei 100 lautet sie 5050 und bei 0 lautet sie 0. Achten Sie darauf, dass n selbst dazugehört.

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

    Laufen Sie mit for i in range(…) und addieren Sie i in der Schleife zu total.

  2. Hinweis 2

    range hört vor seinem stop-Wert auf. Mit welchem stop ist das letzte i gleich n?

  3. Hinweis 3

    for i in range(1, n + 1): total = total + i

Eine Lösung zeigen

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

n = int(input())

total = 0
for i in range(1, n + 1):
    total = total + i
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

n = int(input())

total = 0
# Add every number from 1 to n to total.
print(total)

test_main.py

from learnrun import run_main


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


def test_five():
    """1 bis 5 ergibt 15"""
    got = total_for(5)
    assert got == "15", f"bei 5 gab das Programm {got!r} aus, erwartet: '15'"


def test_hundred():
    """1 bis 100 ergibt 5050"""
    got = total_for(100)
    assert got == "5050", f"bei 100 gab das Programm {got!r} aus, erwartet: '5050' (ist n selbst dabei?)"


def test_zero_and_one():
    """0 ergibt 0 und 1 ergibt 1"""
    got = total_for(0), total_for(1)
    assert got == ("0", "1"), f"bei 0 und 1 gab das Programm {got!r} aus, erwartet: ('0', '1')"

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 3

Countdown

Das Programm liest eine ganze Zahl n. Zählen Sie von n bis 1 herunter, eine Zahl pro Zeile, und geben Sie danach liftoff aus. Verwenden Sie range mit negativer Schrittweite. Bei 3 erscheinen 3, 2, 1 und liftoff in vier Zeilen; bei 0 nur liftoff.

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

    range(start, stop, step) mit einem step von -1 zählt abwärts.

  2. Hinweis 2

    stop gehört nicht dazu. Um bei 1 zu enden, muss stop also 0 sein.

  3. Hinweis 3

    for i in range(n, 0, -1): print(i), danach print("liftoff") nach der Schleife, nicht eingerückt.

Eine Lösung zeigen

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

n = int(input())

for i in range(n, 0, -1):
    print(i)
print("liftoff")
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())

# Print n, n - 1, ..., 1 on separate lines.
print("liftoff")

test_main.py

from learnrun import run_main


def countdown(n):
    return run_main(f"{n}\n").split()


def test_three():
    """3 zählt 3, 2, 1, liftoff"""
    got = countdown(3)
    assert got == ["3", "2", "1", "liftoff"], f"bei 3 gab das Programm {got!r} aus"


def test_ends_at_one():
    """Der Countdown endet bei 1, nicht bei 0"""
    got = countdown(5)
    assert got == ["5", "4", "3", "2", "1", "liftoff"], f"bei 5 gab das Programm {got!r} aus"


def test_zero():
    """Bei 0 erscheint nur liftoff"""
    got = countdown(0)
    assert got == ["liftoff"], f"bei 0 gab das Programm {got!r} aus, erwartet: ['liftoff']"

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 3 von 3

Vokale zählen

Das Programm liest ein Wort. Geben Sie aus, wie viele seiner Buchstaben Vokale sind: a, e, i, o oder u, klein oder groß. Durchlaufen Sie den String mit for und prüfen Sie jeden Buchstaben mit in "aeiouAEIOU". Bei banana lautet die Ausgabe 3, bei rhythm 0.

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 letter in word: liefert pro Runde ein Zeichen.

  2. Hinweis 2

    letter in "aeiouAEIOU" ist True, wenn der Buchstabe eines dieser Zeichen ist.

  3. Hinweis 3

    In der Schleife: if letter in "aeiouAEIOU": count = count + 1

Eine Lösung zeigen

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

word = input()

count = 0
for letter in word:
    if letter in "aeiouAEIOU":
        count = count + 1
print(count)
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

word = input()

count = 0
# Count the vowels in word.
print(count)

test_main.py

from learnrun import run_main


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


def test_banana():
    """banana hat 3 Vokale"""
    got = vowels("banana")
    assert got == "3", f"bei banana gab das Programm {got!r} aus, erwartet: '3'"


def test_no_vowels():
    """rhythm hat keine"""
    got = vowels("rhythm")
    assert got == "0", f"bei rhythm gab das Programm {got!r} aus, erwartet: '0'"


def test_upper_case():
    """Große Vokale zählen mit: Eerie hat 4"""
    got = vowels("Eerie")
    assert got == "4", f"bei Eerie gab das Programm {got!r} aus, erwartet: '4'"

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

Indizes ab 1 zählen

names = ["Ada", "Linus"]
for i in range(1, len(names) + 1):
    print(names[i])

Was Python ausgibt

IndexError: list index out of range

Warum, und die Lösung

Listenindizes reichen von 0 bis len(names) - 1, range(1, len(names) + 1) fragt also eine Position zu viel ab. Laufen Sie direkt über die Elemente, for name in names:, oder nehmen Sie enumerate(names, start=1), wenn Sie Nummern ab 1 zeigen wollen.

Den Doppelpunkt vergessen

for n in [1, 2, 3]
    print(n)

Was Python ausgibt

SyntaxError: expected ':'

Warum, und die Lösung

Wie bei if endet eine for-Zeile mit einem Doppelpunkt, und der eingerückte Block darunter ist der Schleifenrumpf: for n in [1, 2, 3]:. Python führt nichts aus und zeigt auf das Zeilenende.

Über eine Zahl laufen

for i in 5:
    print(i)

Was Python ausgibt

TypeError: 'int' object is not iterable

Warum, und die Lösung

for braucht etwas mit Elementen, etwa eine Liste, einen String oder ein range. Eine einfache Zahl hat keine Elemente. Für fünf Wiederholungen schreiben Sie for i in range(5):.

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

for nimmt die Elemente einzeln

for item in items: führt den eingerückten Block einmal für jedes Element einer Folge aus, der Reihe nach. In jeder Runde enthält item den nächsten Wert: das nächste Element einer Liste oder das nächste Zeichen eines Strings. Anders als bei while verwalten Sie weder Index noch Bedingung, die Schleife kann also weder endlos laufen noch versehentlich ein Element auslassen. Nach der Schleife enthält der Name das letzte Element. Nehmen Sie while, wenn die Zahl der Wiederholungen offen ist, und for, wenn Sie eine Sammlung durchgehen.

range zählt für Sie

range(stop) liefert 0, 1, … bis stop − 1: range(5) ist 0 bis 4, fünf Zahlen. range(start, stop) beginnt woanders, und range(start, stop, step) springt um step, auch rückwärts: range(10, 0, -2) ist 10, 8, 6, 4, 2. Der stop-Wert gehört nie dazu. Ein range ist keine Liste: print(range(3)) zeigt range(0, 3). Die Zahlen sehen Sie, wenn Sie darüber laufen oder list(range(3)) schreiben. range(5, 1) ist leer, denn aufwärts von 5 erreicht man 1 nie.

enumerate, und Listen während der Schleife ändern

enumerate(items) liefert Paare aus Position und Element, und for i, item in enumerate(items): verteilt jedes Paar auf zwei Namen. Positionen beginnen bei 0; enumerate(items, start=1) zählt ab 1, was sich auf dem Bildschirm besser liest. Entfernen Sie keine Elemente aus der Liste, die Sie gerade durchlaufen: Die Schleife rückt nach Position vor, und das Element hinter einem entfernten wird übersprungen. Laufen Sie stattdessen über eine Kopie, for n in numbers[:], oder bauen Sie mit append eine neue Liste.

Quellen

Zuletzt geprüft am 29. September 2026