Lektion 6: Projekt: Zahlenraten

Zeit für dein erstes richtiges Programm. Der Computer denkt sich eine Zahl zwischen 1 und 100 aus, du rätst, und er sagt dir nach jedem Versuch "zu groß" oder "zu klein". Alles, was du dafür brauchst, kennst du schon: Variablen, if/elif, eine while-Schleife und break. Neu ist nur eine Sache.

Baustein 1: Der Zufall

Python bringt fertige Werkzeugkästen mit, sogenannte Module. Mit import random holst du dir den Zufalls-Werkzeugkasten, und random.randint(1, 100) liefert eine zufällige ganze Zahl von 1 bis 100. Führ das mehrmals aus, es kommt (fast) jedes Mal etwas anderes:

Python-Editor

Baustein 2: Ein einzelner Rateversuch

Bevor die Schleife dazukommt, bau die Logik für einen Versuch. Das ist ein sauberer Weg, Programme zu entwickeln: erst ein kleines Stück bauen und testen, dann erweitern.

Python-Editor

Baustein 3: Die Schleife macht das Spiel

Jetzt kommt der Trick: Wir packen den Rateversuch in eine while True-Schleife. Die läuft absichtlich endlos, und erst bei einem Treffer bricht break aus. Dazu zählt eine Variable die Versuche mit. Das ist das komplette Spiel, spiel eine Runde:

Python-Editor

Profi-Frage: Wie viele Versuche brauchst du höchstens, wenn du clever rätst? Antwort: 7. Wenn du immer die Mitte des verbleibenden Bereichs tippst (50, dann 25 oder 75, ...), halbierst du den Suchraum jedes Mal. Das ist die binäre Suche, ein Algorithmus, der in der IHK-Prüfung regelmäßig vorkommt. Du hast ihn gerade beim Spielen benutzt.

Übung 6.1: Baue das Spiel so um, dass der Spieler nur 7 Versuche hat. Nach dem 7. Fehlversuch endet das Spiel mit "Verloren! Die Zahl war ...". Tipp: Ersetze while True durch while versuche < 7 und gib die Verloren-Meldung nach der Schleife aus, falls kein Treffer kam.

Python-Editor
Musterlösung anzeigen
import random

geheimzahl = random.randint(1, 100)
versuche = 0
gewonnen = False

while versuche < 7:
    tipp = int(input("Dein Tipp: "))
    versuche = versuche + 1

    if tipp < geheimzahl:
        print("Zu klein!")
    elif tipp > geheimzahl:
        print("Zu gross!")
    else:
        print(f"Treffer nach {versuche} Versuchen!")
        gewonnen = True
        break

if not gewonnen:
    print(f"Verloren! Die Zahl war {geheimzahl}.")

Übung 6.2: Gib dem Spieler am Ende eine Bewertung: bis 5 Versuche "Stark!", bis 8 "Solide.", ab 9 "Da geht noch was." Du brauchst nur ein if/elif/else nach dem Treffer.

Musterlösung anzeigen
# Nach dem "Treffer"-print, vor dem break:
if versuche <= 5:
    print("Stark!")
elif versuche <= 8:
    print("Solide.")
else:
    print("Da geht noch was.")