Skip to content

Kapitel 7: Schleifen (for/while)

🎯 Lernziele

In diesem Kapitel lernst du:

  • while-Schleifen (Bedingungsschleife)
  • for-Schleifen (Iterationsschleife)
  • Schleifensteuerung (break, continue)
  • Verschachtelte Schleifen
  • Häufige Fehler vermeiden

7.1 while-Schleife

🔁 Grundlegende while-Syntax

python
while bedingung:
    # Codeblock (wird wiederholt, solange Bedingung wahr ist)
    anweisung

💡 Einfaches Beispiel

python
# Zähler von 1 bis 5
zähler = 1
while zähler <= 5:
    print(zähler)
    zähler += 1  # Wichtig: Zähler erhöhen!

# Ausgabe: 1 2 3 4 5

⚠️ Wichtig: Vermeide Endlosschleifen!

python
# Endlosschleife (Zähler wird nicht erhöht!)
zähler = 1
while zähler <= 5:
    print(zähler)
    # zähler += 1  # Vergessen → Endlosschleife!

# Abbruch: Strg + C (Terminal) oder Stop-Button (IDE)

🎯 Praxisbeispiel: Benutzereingabe mit Validierung

python
# Wiederhole, bis gültige Eingabe
while True:
    alter = input("Wie alt bist du? ")
    if alter.isdigit() and int(alter) > 0:
        alter = int(alter)
        break  # Gültige Eingabe → Schleife beenden
    else:
        print("Bitte gib eine gültige Zahl ein!")

print(f"Dein Alter: {alter}")

7.2 for-Schleife

🔄 Grundlegende for-Syntax

python
for variable in iterierbares_objekt:
    # Codeblock (wird für jedes Element ausgeführt)
    anweisung

💡 Einfaches Beispiel

python
# Durch Liste iterieren
früchte = ["Apfel", "Banane", "Orange"]
for frucht in früchte:
    print(frucht)

# Ausgabe:
# Apfel
# Banane
# Orange

🔢 range()-Funktion (Sehr wichtig!)

python
# range(end) - von 0 bis end-1
for i in range(5):
    print(i)  # 0 1 2 3 4

# range(start, end) - von start bis end-1
for i in range(2, 6):
    print(i)  # 2 3 4 5

# range(start, end, step) - mit Schrittweite
for i in range(0, 10, 2):
    print(i)  # 0 2 4 6 8

🎯 Praxisbeispiel: Zahlen raten

python
import random

geheimzahl = random.randint(1, 10)
versuche = 0

for i in range(3):  # 3 Versuche
    versuche += 1
    tipp = int(input(f"Versuch {versuche}/3 - Rate die Zahl (1-10): "))
    
    if tipp == geheimzahl:
        print("Richtig geraten!")
        break
    elif tipp < geheimzahl:
        print("Zu niedrig!")
    else:
        print("Zu hoch!")

if versuche == 3 and tipp != geheimzahl:
    print(f"Game Over! Die Zahl war {geheimzahl}")

7.3 Schleifensteuerung (break, continue)

🛑 break - Schleife sofort beenden

python
# Suche nach einer Zahl
zahlen = [1, 5, 12, 8, 3]

for zahl in zahlen:
    if zahl == 12:
        print("Zahl 12 gefunden!")
        break  # Schleife sofort beenden
    print(f"Überprüfe {zahl}")

# Ausgabe:
# Überprüfe 1
# Überprüfe 5
# Zahl 12 gefunden!

⏭️ continue - Aktuelle Iteration überspringen

python
# Nur gerade Zahlen ausgeben
for i in range(1, 6):
    if i % 2 != 0:  # Wenn ungerade
        continue  # Rest überspringen
    print(i)  # Nur gerade Zahlen

# Ausgabe: 2 4

🎯 Praxisbeispiel: Passwort-Generator mit Bedingungen

python
passwörter = ["123", "pass", "passwort123", "123456"]

for pw in passwörter:
    if len(pw) < 8:
        print(f"'{pw}' zu kurz - überspringe")
        continue
    
    if pw.isdigit():
        print(f"'{pw}' nur Zahlen - überspringe")
        continue
    
    print(f"'{pw}' ist ein starkes Passwort!")
    break

# Ausgabe:
# '123' zu kurz - überspringe
# 'pass' zu kurz - überspringe
# 'passwort123' ist ein starkes Passwort!

7.4 Verschachtelte Schleifen

🔲 Grundlegende Syntax

python
for i in äußere_liste:
    for j in innere_liste:
        # Codeblock

💡 Klassisches Beispiel: Kleines Einmaleins

python
# Kleines Einmaleins (1-10)
for i in range(1, 11):
    for j in range(1, 11):
        ergebnis = i * j
        print(f"{i} x {j} = {ergebnis}", end="\t")
    print()  # Neue Zeile nach jeder Zeile

🎯 Praxisbeispiel: Muster drucken

python
# Sternchen-Dreieck
zeilen = 5

for i in range(1, zeilen + 1):
    for j in range(i):
        print("*", end="")
    print()

# Ausgabe:
# *
# **
# ***
# ****
# *****

7.5 for-else und while-else (Besonderheit in Python!)

🤔 else nach Schleife?

python
# else wird ausgeführt, wenn Schleife NICHT durch break beendet wurde
for i in range(5):
    if i == 10:
        break
else:
    print("Schleife normal beendet (kein break)")

# Ausgabe: Schleife normal beendet (kein break)

🎯 Praxisbeispiel: Primzahlprüfung

python
def ist_primzahl(n):
    if n < 2:
        return False
    
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

# Test
zahl = 17
if ist_primzahl(zahl):
    print(f"{zahl} ist eine Primzahl")
else:
    print(f"{zahl} ist keine Primzahl")

⚠️ Häufige Fehler

❌ Fehler 1: Endlosschleife

python
# Falsch (Zähler wird nicht erhöht)
zähler = 0
while zähler < 5:
    print(zähler)
    # zähler += 1  # Vergessen!

# Richtig
zähler = 0
while zähler < 5:
    print(zähler)
    zähler += 1  # Zähler erhöhen!

❌ Fehler 2: Einrückungsfehler

python
# Falsch
for i in range(5):
print(i)  # IndentationError!

# Richtig
for i in range(5):
    print(i)  # 4 Leerzeichen einrücken

❌ Fehler 3: break/continue verwechseln

python
# break - Schleife beenden
# continue - Aktuelle Iteration überspringen

for i in range(5):
    if i == 2:
        break  # Schleife beenden → 0 1
    print(i)

for i in range(5):
    if i == 2:
        continue  # Nur 2 überspringen → 0 1 3 4
    print(i)

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ while-Schleifen zu verwenden (Bedingungsschleife)
  • ✅ for-Schleifen zu verwenden (Iterationsschleife)
  • ✅ Die range()-Funktion zu nutzen
  • ✅ break und continue zu verwenden
  • ✅ Verschachtelte Schleifen zu erstellen
  • ✅ Endlosschleifen zu vermeiden

🎯 Übung

  1. Schreibe ein Programm, das die Zahlen von 1 bis 100 summiert
  2. Erstelle ein Programm, das alle Primzahlen zwischen 1 und 100 ausgibt
  3. Baue einen einfachen Zahlenratespiel mit while-Schleife
  4. Drucke ein Rechteck aus Sternchen mit verschachtelten Schleifen

⏭️ Nächstes Kapitel

In Kapitel 8 lernen wir String-Operationen - Textverarbeitung in Python!

Frei für alle Anfänger