1. Die Grundidee: Warum brauchen wir Schleifen?
Computer sind unschlagbar schnell darin, monotone Aufgaben millionenfach zu wiederholen. Anstatt 100-mal denselben Befehl untereinander zu schreiben, sagen wir Python einfach: "Wiederhole diesen Code-Block X-mal!"
Es gibt in Python zwei Hauptarten von Schleifen:
- Zählschleife (
for): Wie ein Karussell mit Wertmarken. Du kaufst 5 Runden. Der Automat zählt: 1, 2, 3, 4, 5 – und stoppt genau nach 5 Runden. - Bedingungsschleife (
while): Wie ein Riesenrad, das sich dreht, SOLANGE die Musik spielt. Sobald die Musik stoppt (Bedingung wirdFalse), hält das Rad an.
2. Zählschleifen: for und range()
Verwende for, wenn du im Voraus weißt, wie oft etwas wiederholt werden soll. Die Funktion range() erzeugt dafür die Zahlenfolge.
range(1, 5) läuft von 1 bis 4 (die Zahl 5 ist nicht dabei)!Wenn du bis 5 zählen willst, musst du
range(1, 6) schreiben.
Die 3 Varianten von range() im Überblick:
# Countdown von 5 bis 1 for sekunde in range(5, 0, -1): print(f"Raketenstart in {sekunde}...") print("🚀 Liftoff!")
3. Bedingungsschleifen: while
Verwende while, wenn du nicht weißt, wie viele Durchläufe nötig sind, sondern die Schleife laufen soll, solange eine Bedingung wahr (True) ist.
energie = 3 while energie > 0: print(f"Roboter läuft... Energie: {energie}") energie -= 1 # ⚠️ Zähler anpassen, sonst Endlosschleife! print("Akku leer! Bitte aufladen.")
Wenn die Bedingung niemals False wird, stürzt dein Programm zwar nicht ab, aber es friert für immer ein! Verändere immer die Prüfvariable im Schleifenkörper.
Notausstieg im Terminal: Drücke Strg + C, um eine Endlosschleife sofort abzubrechen!
4. Schleifen-Steuerung: break & continue
Mit zwei speziellen Schlüsselwörtern hast du volle Kontrolle über den Schleifenablauf:
break (Notbremse)
Beendet die Schleife sofort und vollständig. Die Programmausführung springt direkt hinter die Schleife.
continue (Nächste Runde)
Bricht nur die aktuelle Runde ab und springt sofort zum nächsten Schleifendurchlauf.
# Beispiel: Nur ungerade Zahlen drucken, bei 7 abbrechen for zahl in range(1, 11): if zahl % 2 == 0: continue # Überspringe gerade Zahlen if zahl == 7: print("Glückszahl 7 gefunden -> Abbruch!") break # Schleife komplett beenden print("Ungerade Zahl:", zahl) # Ausgabe: 1, 3, 5, danach Abbruch!
5. Das Akkumulator-Muster 🧺
Ein Akkumulator (Sammelbehälter) ist eines der wichtigsten Entwurfsmuster der Informatik. Er sammelt während der Schleife Werte an:
# 1. Summen-Akkumulator (Startwert: 0) summe = 0 for x in [10, 20, 30]: summe += x # summe = summe + x print("Gesamtsumme:", summe) # 60 # 2. Zähler-Akkumulator (Startwert: 0) anzahl = 0 for x in range(1, 11): if x % 2 == 0: anzahl += 1 print("Anzahl gerade Zahlen:", anzahl) # 5 # 3. Produkt-Akkumulator (Startwert: 1, NIEMALS 0!) produkt = 1 for x in range(1, 5): produkt *= x # 1 * 2 * 3 * 4 print("Produkt (4!):", produkt) # 24
summe = 0 oder produkt = 1) immer VOR der Schleife! Wenn du sie in der Schleife definierst, wird der Wert bei jedem Durchlauf wieder auf 0 bzw. 1 zurückgesetzt.
6. 🎯 Deine Aufgaben in aufgabe.py
Öffne die Datei aufgabe.py und bearbeite die folgenden 5 Funktionen:
💡 Lösungshinweise (Aufklappen bei Bedarf)
🔍 Tipp zu TODO 1 & 2 (Summe & Fakultät)
def summe_bis(n: int) -> int: if n <= 0: return 0 summe = 0 for i in range(1, n + 1): summe += i return summe
🔍 Tipp zu TODO 4 (Primzahl-Test mit Schleife)
def ist_primzahl(n: int) -> bool: if n <= 1: return False for i in range(2, n): if n % i == 0: return False # Teiler gefunden -> keine Primzahl! return True # Kein Teiler gefunden -> Primzahl!
🔍 Tipp zu TODO 5 (Quersumme mit while-Schleife)
def quorsumme(n: int) -> int: rest = abs(n) summe = 0 while rest > 0: summe += rest % 10 # Letzte Ziffer addieren rest = rest // 10 # Letzte Ziffer abschneiden return summe
7. 🧪 Testen & Weitergehen
Führe im Terminal den Unittest aus:
python3 test_aufgabe.py