Zum Hauptinhalt springen

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:

BausteinWo im Spiel
whileraten, bis richtig
Vergleichezu klein / zu groß / gleich
if / elifTipps geben
ZählerVersuche zählen
f-StringGewinn-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)

  1. Start: Geheimzahl, tipp-Startwert, versuche = 0
  2. Schleife: solange Tipp ungleich Geheimzahl
  3. Eingabe: neuen Tipp lesen, Versuche +1
  4. Verarbeitung: vergleichen und Feedback
  5. 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 input vom 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

GeheimTippsErwartung
771 Versuch, sofort
74, 9, 73 Versuche, Tipps klein/groß
71,2,3,4,5 (mit Max 5)verlieren möglich

Häufige Stolpersteine

ProblemLösung
Schleife endet nieBedingung und Tipp-Update prüfen
Kein Feedback bei richtigok – Gewinntext nach der Schleife
tipp startet schon richtigStartwert ungleich geheim wählen
Vergleiche mit strint(input(...))

Reflexion

  1. Welche Bedingung beendet die Schleife?
  2. Warum brauchst du if/elif in der Schleife?
  3. 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.