Mini-Projekt: Zahlen-Ratespiel
Die Mission
Py denkt sich eine Zahl (zuerst fest, z. B. 7).
Luna rät, bis es stimmt – und will nach jedem Tipp wissen: zu klein oder zu groß?
Lily achtet auf klare Ausgaben. Buggy baut eine Endlosschleife ohne Zähler-Änderung und ohne Gewinn-Bedingung – du nicht.
Warum dieses Projekt?
Hier steckt Kapitel 11 (und Band 2) zusammen:
| Baustein | Wo im Spiel |
|---|---|
while | raten, bis richtig |
| Vergleiche | zu klein / zu groß / gleich |
if / elif | Tipps geben |
| Zähler | Versuche zählen |
| f-String | Gewinn-Text |
Zielbild
=== Zahlen-Ratespiel ===
Rate eine Zahl 1-10: 4
Zu klein!
Rate eine Zahl 1-10: 9
Zu gross!
Rate eine Zahl 1-10: 7
Richtig in 3 Versuchen!
Anforderungen (Checkliste)
- Titelzeile
- geheime Zahl in einer Variable
-
while, bis der Tipp stimmt - Tipps „zu klein“ / „zu gross“
- Versuchszähler
- Gewinn-Text mit f-String
- Kommentar im Code
- läuft ohne Fehler
Bau-Plan (EVA + Schleife)
- Start: Geheimzahl,
tipp-Startwert,versuche = 0 - Schleife: solange Tipp ungleich Geheimzahl
- Eingabe: neuen Tipp lesen, Versuche +1
- Verarbeitung: vergleichen und Feedback
- Ende: Gewinnmeldung
Tipp für den Startwert von tipp: wähle etwas, das ungleich der Geheimzahl
ist (z. B. 0), damit die Schleife mindestens einmal laufen kann.
Basis-Lösung
Eine moegliche Loesung anzeigen
# Zahlen-Ratespiel
print("=== Zahlen-Ratespiel ===")
geheim = 7
tipp = 0
versuche = 0
while tipp != geheim:
tipp = int(input("Rate eine Zahl 1-10: "))
versuche = versuche + 1
if tipp < geheim:
print("Zu klein!")
elif tipp > geheim:
print("Zu gross!")
print(f"Richtig in {versuche} Versuchen!")
Level-Ups
Basis
Feste Geheimzahl, Tipps, Versuchszähler, Gewinn-Text.
Besser
- Maximal 5 Versuche, sonst verlieren
- Begrüßung und Regeln ausgeben
- ungültige Bereiche erwähnen (z. B. nur 1–10)
Profi
- Geheimzahl per
inputvom Spielleiter setzen (andere Person tippt) - später mit
random.randint(Module in Band 3) - Highscore: wenigste Versuche speichern (Variable)
Maximal-Versuche (Skizze)
geheim = 7
versuche = 0
max_versuche = 5
gewonnen = False
while versuche < max_versuche and not gewonnen:
tipp = int(input("Tipp: "))
versuche = versuche + 1
if tipp == geheim:
gewonnen = True
elif tipp < geheim:
print("Zu klein!")
else:
print("Zu gross!")
if gewonnen:
print(f"Richtig in {versuche} Versuchen!")
else:
print("Leider verloren.")
Testideen
| Geheim | Tipps | Erwartung |
|---|---|---|
| 7 | 7 | 1 Versuch, sofort |
| 7 | 4, 9, 7 | 3 Versuche, Tipps klein/groß |
| 7 | 1,2,3,4,5 (mit Max 5) | verlieren möglich |
Häufige Stolpersteine
| Problem | Lösung |
|---|---|
| Schleife endet nie | Bedingung und Tipp-Update prüfen |
| Kein Feedback bei richtig | ok – Gewinntext nach der Schleife |
tipp startet schon richtig | Startwert ungleich geheim wählen |
| Vergleiche mit str | int(input(...)) |
Reflexion
- Welche Bedingung beendet die Schleife?
- Warum brauchst du
if/elifin der Schleife? - Was zählt der Versuchszähler – und wann erhöhst du ihn?
Kapitel 11 geschafft!
while beherrscht Wiederholung, bis eine Bedingung endet.
Als Nächstes: for und range – zählen leicht gemacht.
Geschafft! Feiere den Gewinn – dann weiter zu for.