edubun
Deutsch

Wiederholen mit for und while

range(5) erzeugt 0, 1, 2, 3 und 4: fünf Zahlen, und 5 gehört nicht dazu.

Lass eine Schleife mit drei Zeilen laufen und sieh total wachsen

Kopiere dieses Programm in IDLE und führe es aus, bevor du die Erklärung liest. Ändere dann die Liste in deine eigenen Zahlen und führe es noch einmal aus.

total = 0
for n in [3, 5, 2]:
    total = total + n
    print(n, total)
print("done", total)
Ausgabe
3 3
5 8
2 10
done 10

Die for-Zeile nimmt die Einträge der Liste nacheinander. Bei jedem Durchlauf bezieht sich die Variable n auf den nächsten Eintrag, und die eingerückten Zeilen darunter laufen einmal mit diesem Wert. Ein Durchgang durch die eingerückten Zeilen heißt Iteration. Nach dem letzten Eintrag macht Python mit der ersten nicht eingerückten Zeile weiter, "done" wird also einmal am Ende ausgegeben. Eine Ablauftabelle macht das Muster klar.

Durchlaufntotal nach dem DurchlaufAusgegeben
(vorher)0
1333 3
2585 8
32102 10
(nachher)10done 10
Jeder Durchlauf nimmt den nächsten Eintrag in n und addiert ihn zu total. Die laufende Summe ist das häufigste Schleifenmuster überhaupt.

Die Variable total heißt Akkumulator: Sie beginnt vor der Schleife bei 0 und sammelt bei jedem Durchlauf etwas. Die Zeile total = total + n ist so häufig, dass Python eine Kurzform hat, total += n. Das Zählen funktioniert genauso mit count += 1.

range() erzeugt die Zahlen für dich

Um etwas eine feste Anzahl von Malen zu wiederholen, durchlaufe range(). range(5) ergibt 0, 1, 2, 3, 4: Es beginnt bei 0 und hört vor 5 auf, genau wie ein Slice. range(1, 6) ergibt 1 bis 5. Eine dritte Zahl legt die Schrittweite fest, range(0, 10, 2) ergibt also die geraden Zahlen 0 bis 8. Das Einmaleins der 7, das jedes koreanische Kind in der zweiten Klasse aufsagt, ist eine Schleife aus zwei Zeilen.

for i in range(1, 10):
    print(7, "x", i, "=", 7 * i)
Ausgabe
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63

Eine for-Schleife kann auch durch die Zeichen eines Strings gehen, was das Zählen von Buchstaben leicht macht.

count = 0
for ch in "banana":
    if ch == "a":
        count += 1
print(count)
Ausgabe
3

while wiederholt, solange eine Bedingung True bleibt

Eine while-Schleife hat keine Liste zum Durchlaufen. Sie prüft eine Bedingung, führt die eingerückten Zeilen aus, wenn sie True ist, und prüft wieder, immer wieder. Das passt zu Aufgaben, bei denen du die Zahl der Durchläufe vorher nicht kennst, etwa „spare weiter, bis die Summe 50 000 Won erreicht“. Etwas in der Schleife muss die Bedingung ändern, sonst endet die Schleife nie. Passiert das, stoppe das Programm mit Strg+C.

saved = 0
weeks = 0
while saved < 50000:
    saved += 12000
    weeks += 1
print(weeks, saved)
Ausgabe
5 60000

break verlässt eine Schleife sofort, auch mittendrin. Es ist praktisch, wenn du suchst und aufhören kannst, sobald du findest, was du willst. Die Schleife unten stoppt beim ersten Ergebnis unter 60 und sieht die 88 nie an.

for s in [72, 91, 55, 88]:
    if s < 60:
        print("first below 60:", s)
        break
    print("ok", s)
Ausgabe
ok 72
ok 91
first below 60: 55
for x in ...Führt die eingerückten Zeilen einmal für jeden Eintrag aus
range(a, b)Ganze Zahlen von a bis ausschließlich b
whileWiederholt, solange die Bedingung True ist
AkkumulatorEine Variable, die über die Durchläufe eine Summe sammelt
+=total += n ist die Kurzform von total = total + n
breakVerlässt die Schleife sofort
  1. Was gibt das aus?
    for i in range(3):
        print(i)
    • 0
      1
      2
    • 1
      2
      3
    • 0
      1
      2
      3
    • 3
  2. Was gibt das aus?
    total = 0
    for n in range(1, 5):
        total += n
    print(total)
  3. Was gibt das aus?
    print(list(range(0, 10, 3)))
  4. Was gibt das aus?
    total = 0
    for n in [1, 2, 3]:
        total += n
        print(total)
    • 6
    • 1
      3
      6
    • 1
      2
      3
    • 0
      1
      3
  5. Was gibt das aus?
    count = 0
    for ch in "seoul":
        if ch in "aeiou":
            count += 1
    print(count)
  6. Was gibt das aus?
    n = 1
    while n < 20:
        n = n * 2
    print(n)
  7. Was gibt das aus?
    for s in [5, 8, 3, 9]:
        if s > 6:
            print(s)
            break
  8. Wie oft gibt das hi aus?
    for i in range(2, 8):
        print("hi")
  9. Was gibt das aus?
    word = ""
    for ch in "abc":
        word = ch + word
    print(word)
  10. Bringe die Zeilen in die richtige Reihenfolge, damit das Programm die Summe von 1 bis 100 ausgibt.
    Ausgabe
    5050
Häufige Fehler
  • „range(1, 10) geht bis 10.“ Es hört vor 10 auf, der letzte Wert ist also 9. Für 1 bis 10 schreibe range(1, 11).
  • „Meine while-Schleife ist in Ordnung; sie dauert nur lange.“ Ändert nichts in der Schleife die Bedingung, stoppt sie nie. Prüfe, dass die Variable in der Bedingung bei jedem Durchlauf aktualisiert wird, und drücke Strg+C, um eine außer Kontrolle geratene Schleife zu stoppen.
  • „Ob print innerhalb oder außerhalb der Schleife steht, macht keinen Unterschied.“ Unter dem for eingerückt läuft es bei jedem Durchlauf; am linken Rand läuft es einmal nach der Schleife. Entscheide, ob du jeden Schritt willst oder nur die Endantwort.
Hinweis für LehrkräfteLass Lernende die Schleife vor jeder Erklärung ausführen und fülle dann gemeinsam die Ablauftabelle an der Tafel. Die Tabelle macht „die eingerückten Zeilen laufen einmal pro Eintrag“ greifbar. Die zwei Stellen, an denen sie ausrutschen, sind der Stoppwert von range() und die Einrückung des letzten print. Bitte sie bei while-Schleifen, vor dem Drücken auf Run auf die Zeile zu zeigen, die die Bedingung irgendwann False machen wird. Das Einmaleins der 7 ist ein schneller Erfolg für koreanische Lernende, die die erwartete Ausgabe auswendig kennen und auf einen Blick prüfen können.
Das Wichtigste
  • for x in list: führt die eingerückten Zeilen einmal pro Eintrag aus.
  • range(a, b) hört vor b auf; range(n) ist 0 bis n - 1.
  • Ein Akkumulator beginnt vor der Schleife und wächst in ihr.
  • while wiederholt, solange eine Bedingung True ist; etwas muss sie ändern.
  • break verlässt die Schleife sofort.
Quellen zu diesem Kurs (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Abgerufen: 2026-10-19