Zahlenraten - ein Spiel für den Computer?

Es ist schon wirklich anstrengend die ganze Zeit selber raten zu müssen. Deshalb macht hier der Computer das für uns...

In dem ersten Beitrag zu dem Thema, haben wir ja ein Programm mit dem Zahlen erraten werden können. Diese Programm nehmen wir jetzt und machen es noch ein wenig cooler!

Der Grundstein für unsere Arbeit sieht so aus:

zahl = 10
geraten = -1
zaehler = 0

while geraten != zahl:
    geraten = int(input("Raten Sie: "))
    if geraten < zahl:
      print("die eingegebene Zahl ist zu klein")
    if geraten > zahl:
        print("die eingegebene Zahl ist zu groß")
    if geraten == zahl:
        print("Glückwunsch! Die Zahl wurde erraten")
        break
    zaehler = zaehler + 1

print("Sie haben " , zaehler, "Versuche gebraucht um die Zahl zu erraten!")


Als erstes schreiben wir in die erste Zeile:

import random

Damit verschaffen wir uns die Möglichkeit, dass der Computer zufällige Zahlen erzeugt.

Diese Zahlen ersetzten dann die manuelle Eingabe, ungefähr so:

while geraten != zahl:
    print("Raten Sie: ")
    geraten = random.randint(0, 10)
    print(geraten)
if geraten < zahl:

Und schon nervt der Computer fortan nur noch sich selbst mit seinem ständigen Gefrage nach irgendwelchen Zahlen, sehr praktisch!

Echt toll, mit sarkastischem Unterton?

Stimmt, noch besser wäre es wenn der Computer sich selbst optimiert! Nehmen wir zum Beispiel an, die Erstellung der zufälligen Zahl wäre von bestimmten Parameter abhängig, die entsprechend angepasst werden. Wenn also eine zu große Zahl erstellt wird, verschiebt der Computer die Grenze einfach nach unten, und umgekehrt.

Kein Problem, das Ganze haben wir dann noch mit etwas egoistischem Gerede gefüllt:

import random

zahl = 10
geraten = -1
zaehler = 0
unteregrenze = 0
oberegrenze = 10

while geraten != zahl:
    print("Ich errate die Zahl: ")
    geraten = random.randint(unteregrenze, oberegrenze)#hier wird aus beiden Grenze eine Zufallszahl
    print(geraten)
    if geraten < zahl:
      print("Ich habe eine zu kleine Zahl gerraten")
      unteregrenze = geraten + 1 #hier wird die Grenze entsprechend nach oben korrigiert
    if geraten > zahl:
        print("die geratene Zahl war zu groß")
        oberegrenze = geraten -1 #und hier wird die Grenze nach unten korrigiert
    if geraten == zahl:
        print("Glückwunsch! Ich habe die Zahl erraten!")
        break
    zaehler = zaehler + 1
    
print("Ich habe " , zaehler, " Versuche gebraucht um die Zahl zu erraten!")

Und schon optimiert der Computer sich selbst.

Um den Wahnsinn perfekt zu machen können wir jetzt noch die Variable "zahl" als Zufallszahl erstellen:

zahl = random.randint(0,10)

Übrigens im Durchschnitt benötigte der Computer in unseren Tests 3 Versuche, das Maximum waren 5 und das Minimum 2 Versuche.