Lernziele dieses Kapitels
- Du nutzt for-Schleifen mit range() für gezielte Wiederholungen
- Du steuerst while-Schleifen mit Abbruchbedingungen und vermeidest Endlosschleifen
- Du nutzt break, continue und enumerate() für elegante Iteration
- Du baust PyBuddy's interaktives Menü
Die for-Schleife
Die for-Schleife ist die häufigste Wiederholung in Python. Sie durchläuft jedes Element einer Sequenz — sei es eine Liste, ein String oder ein range()-Objekt.
range(start, stop, step) erzeugt Zahlenfolgen. Wichtig: Der stop-Wert ist exklusiv!
# for-Schleife mit range()
for i in range(1, 6):
print(f"Runde {i}")
# Mit Schrittweite
for i in range(0, 11, 2):
print(f"Gerade Zahl: {i}")
# Strings durchlaufen
for buchstabe in "Python":
print(buchstabe.upper())
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
for i in range(1, 6):
print(i)
for (let i = 1; i < 6; i++) {
console.log(i);
}
range(1, 6) gibt 1-5. JavaScript: i < 6 gibt auch 1-5. Python's for ist intuitiver, JS braucht die klassische C-Syntax.Die while-Schleife
while wiederholt Code, solange eine Bedingung True ist. Sie ist perfekt, wenn du nicht weißt, wie oft etwas wiederholt werden muss — z.B. bis der Nutzer 'exit' eingibt.
Achtung
Vergiss nie die Abbruchbedingung, sonst läuft die Schleife ewig — das nennt man Endlosschleife!
# while-Schleife: Countdown
countdown = 3
while countdown > 0:
print(f"Start in {countdown}...")
countdown -= 1
print(" Los!")
# Nutzer-Eingabe bis 'exit'
befehl = ""
while befehl != "exit":
befehl = input("Befehl (exit zum Beenden): ").lower()
if befehl != "exit":
print(f"Ausführung: {befehl}")
print(" Programm beendet.")
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
while befehl != "exit":
befehl = input("> ")
while (befehl !== "exit") {
befehl = prompt("> ");
}
input() im Terminal, JavaScript prompt() als Popup.break & continue
Manchmal willst du eine Schleife vorzeitig abbrechen oder einen Durchlauf überspringen. Dafür gibt es break und continue:
break— beendet die Schleife sofortcontinue— überspringt den Rest des aktuellen Durchlaufs
# break: Schleife vorzeitig beenden
for i in range(1, 11):
if i == 5:
print(" Abbruch bei 5!")
break
print(i)
# continue: Überspringen
for i in range(1, 6):
if i == 3:
print("⏭️ Überspringe 3")
continue
print(f"Verarbeite {i}")
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
if i == 5:
break
if i == 3:
continue
if (i === 5) { break; }
if (i === 3) { continue; }
break und continue funktionieren in Python und JavaScript exakt gleich!enumerate() & zip()
enumerate() liefert bei einer Iteration gleichzeitig den Index und den Wert — super praktisch! zip() kombiniert zwei Listen Element für Element.
# enumerate: Index + Wert
aufgaben = ["Python lernen", "Übung machen", "Projekt bauen"]
for index, aufgabe in enumerate(aufgaben, start=1):
print(f"{index}. {aufgabe}")
# zip: Listen kombinieren
namen = ["Anna", "Ben", "Clara"]
punkte = [95, 87, 92]
for name, punkt in zip(namen, punkte):
print(f"{name}: {punkt} Punkte")
List Comprehensions
List Comprehensions sind Pythons Superpower: Du erstellst eine neue Liste in einer einzigen Zeile. Sie ist schneller und lesbarer als eine klassische for-Schleife.
Pro Tipp
List Comprehensions können auch Bedingungen enthalten: [x for x in liste if x > 0] filtert automatisch.
# Klassisch vs. Comprehension
zahlen = [1, 2, 3, 4, 5]
# Klassisch
quadrate_alt = []
for z in zahlen:
quadrate_alt.append(z ** 2)
# Comprehension (eine Zeile!)
quadrate_neu = [z ** 2 for z in zahlen]
print(quadrate_neu) # [1, 4, 9, 16, 25]
# Mit Bedingung: nur gerade Zahlen
gerade = [z for z in zahlen if z % 2 == 0]
print(gerade) # [2, 4]
# Strings transformieren
woerter = ["python", "ist", "cool"]
gross = [w.upper() for w in woerter]
print(gross) # ['PYTHON', 'IST', 'COOL']
Warm-Up: Multiplikationstabelle
Schreibe ein Programm, das eine Zahl einliest und die Multiplikationstabelle von 1-10 ausgibt.
Hinweis: z = int(input("Zahl: "))
for i in range(1, 11):
print(f"{i} x {z} = {i * z}")
z = int(input("Zahl: "))
for i in range(1, 11):
print(f"{i} x {z} = {i * z}")
Challenge: Zahlenraten
Programmiere ein Zahlenraten-Spiel! Der Computer wählt eine Zahl 1-100. Der Spieler tippt, bis er die Zahl errät. Nach jedem Tipp kommt 'zu hoch' oder 'zu niedrig'.
Hinweis: import random
ziel = random.randint(1, 100)
versuche = 0
while True:
tipp = int(input("Dein Tipp: "))
versuche += 1
if tipp < ziel:
print("Zu niedrig!")
elif tipp > ziel:
print("Zu hoch!")
else:
print(f" Richtig! {versuche} Versuche.")
break
import random
ziel = random.randint(1, 100)
versuche = 0
while True:
tipp = int(input("Dein Tipp: "))
versuche += 1
if tipp < ziel:
print("Zu niedrig!")
elif tipp > ziel:
print("Zu hoch!")
else:
print(f" Richtig! {versuche} Versuche.")
break
PyBuddy-Checkpoint: Menü-Loop
PyBuddy zeigt ein interaktives Menü und wiederholt, bis der Nutzer 'exit' eingibt. Nutze while und if-elif.
Hinweis: # pybuddy/main.py
print(" PyBuddy ist bereit!")
while True:
cmd = input("\n[Befehl: hallo, zeit, exit] ").lower()
if cmd == "exit":
print(" Bis bald!")
break
elif cmd == "hallo":
print(" Hallo! Wie geht es dir?")
elif cmd == "zeit":
import datetime
print(f"🕒 {datetime.datetime.now().strftime('%H:%M')}")
else:
print("❓ Unbekannter Befehl.")
# pybuddy/main.py
print(" PyBuddy ist bereit!")
while True:
cmd = input("\n[Befehl: hallo, zeit, exit] ").lower()
if cmd == "exit":
print(" Bis bald!")
break
elif cmd == "hallo":
print(" Hallo! Wie geht es dir?")
elif cmd == "zeit":
import datetime
print(f"🕒 {datetime.datetime.now().strftime('%H:%M')}")
else:
print("❓ Unbekannter Befehl.")
In Tetris läuft eine Endlosschleife, die ständig prüft: Gibt es eine vollständige Reihe? Wenn ja → lösche sie, aktualisiere Punkte, beschleunige das Spiel. Genau das machst du mit while und if — nur mit mehr Grafik!
Zusammenfassung
- for → Element für Element durchlaufen
- while → solange Bedingung True
- break / continue für Flusssteuerung
- enumerate() und zip() für elegante Iteration
- List Comprehensions: [x*2 for x in liste]