Python-Ratespiel

Muhammad Maisam Abbas 21 Juni 2023
  1. Spielmechanik erraten
  2. Zahlenratespiel mit dem Modul random in Python
Python-Ratespiel

Dieses Tutorial zeigt den Prozess der Entwicklung eines einfachen Zahlenratespiels in Python.

Spielmechanik erraten

Wir versuchen, ein Spiel zu entwickeln, das die Ober- und Untergrenze vom Benutzer nimmt, eine Zufallszahl in diesem Bereich generiert, den Benutzer auffordert, die Zahl zu erraten, und zählt, wie viele Wege der Benutzer nimmt, um zur richtigen Vermutung zu gelangen. Dieses Spiel wird nur CLI-basiert sein.

Zahlenratespiel mit dem Modul random in Python

Das erste, was unser Programm tut, ist, Ober- und Untergrenzen vom Benutzer als Eingaben zu nehmen. Dies kann mit der in Python integrierten input()-Methode erfolgen.

Die Methode input() liest die Eingabe von der Kommandozeile und gibt sie als String zurück. Das einzige Problem hier ist, dass wir ganzzahlige Werte eingeben wollen.

Wir können unsere input()-Methode in die eingebaute int()-Methode packen, um dieses Problem zu lösen. Dadurch wird die von der Methode input() zurückgegebene Eingabezeichenfolge in einen ganzzahligen Wert umgewandelt.

Das folgende Beispiel zeigt eine funktionierende Implementierung dieses Schritts.

Code:

lower_limit = int(input("Please enter the Lower Limit"))
upper_limit = int(input("Please enter the Upper Limit"))
print("Lower Limit =", lower_limit)
print("Upper Limit =", upper_limit)

Ausgang:

Please enter the Lower Limit0
Please enter the Upper Limit99
Lower Limit = 0
Upper Limit = 99

Wir können die Nachricht schreiben, die wir dem Benutzer anzeigen möchten, während wir die Daten in die Methode input() als Eingabeparameter eingeben. Da wir die Unter- und Obergrenze haben, können wir leicht Code schreiben, um eine zufällige Ganzzahl innerhalb dieses Bereichs zu generieren.

Wir können das eingebaute random-Modul in Python verwenden, um diese Aufgabe namens random.randint()-Methode auszuführen. Es nimmt die untere Grenze und die obere Grenze als Eingabeparameter und gibt eine Ganzzahl innerhalb dieses Bereichs zurück.

Das nächste Codebeispiel zeigt, wie man mit der Python-Methode random.randint() eine zufällige Ganzzahl innerhalb eines bestimmten Bereichs generiert.

Code:

import random

number = random.randint(lower_limit, upper_limit)
print("Random Number =", number)

Ausgang:

Random Number = 47

Bisher haben wir die Grenzen des Benutzers genommen und eine zufällige Ganzzahl innerhalb dieser Grenzen generiert. Wir müssen die Vermutung des Benutzers nehmen und sie mit der zufällig generierten Zahl vergleichen.

Dies kann durch die Kombination der input()-Methode mit einem einfachen if/else-Block erreicht werden.

Code:

guess = int(input("Guess the number"))
if guess == number:
    print("Yes, You are correct")
else:
    print("Incorrect Answer!")

Ausgang:

Guess the number15
Incorrect Answer!

Das einzige Problem hier ist, dass es uns keine Hinweise gibt, um die richtige Zahl zu erraten. Es sagt uns, ob wir richtig oder falsch liegen, was keine unterhaltsame Art ist, ein Spiel zu spielen.

Wir können das verbessern, indem wir mehrere if-Anweisungen platzieren und sie in einer Schleife ausführen, bis der Benutzer die richtige Zahl errät.

Code:

win = False
while win != True:
    guess = int(input("Guess the number"))
    if guess == number:
        win = True
        print("Yes, You are correct")
    elif guess < number:
        print("You are a little shorter")
    else:
        print("You are a little larger")

Ausgang:

Guess the number5
You are a little shorter
Guess the number95
You are a little larger
Guess the number47
Yes, You are correct

Wir haben eine while-Schleife verwendet, weil wir nicht wissen, wie viele Versuche der Benutzer braucht, um die richtige Antwort zu erhalten. Wir haben eine Flag-Variable win erstellt, die der While-Schleife mitteilt, wann sie anhalten soll, und die Variable win wird auf False gesetzt, bis der Benutzer die richtige Zahl errät.

Unser Zahlenratespiel ist fast fertig, und das einzige, was noch fehlt, ist der Punktezähler, der die Anzahl der Versuche zählt, die ein Benutzer unternommen hat, um die richtige Antwort zu finden. Wir können unseren vorherigen Code ändern und eine Zählervariable in der Schleife verwenden.

Das folgende Code-Snippet zeigt, wie wir unserem Zahlenratespiel einen Bewertungsmechanismus hinzufügen können.

Code:

win = False
steps = 0
while win != True:
    guess = int(input("Guess the number"))
    steps += 1
    if guess == number:
        win = True
        print("Yes, You are correct")
        print("Number of Trails =", steps)
    elif guess < number:
        print("You are a little shorter")
    else:
        print("You are a little larger")

Ausgang:

Guess the number22
You are a little shorter
Guess the number44
You are a little shorter
Guess the number47
Yes, You are correct
Number of Trails = 3

Wir haben einen Schrittzähler hinzugefügt, der die Anzahl der Versuche verfolgt, die der Benutzer unternommen hat, um das Spiel zu beenden.

Code:

import random

lower_limit = int(input("Please enter the Lower Limit"))
upper_limit = int(input("Please enter the Upper Limit"))

number = random.randint(lower_limit, upper_limit)

win = False
steps = 0
while win != True:
    guess = int(input("Guess the number"))
    steps += 1
    if guess == number:
        win = True
        print("Yes, You are correct")
        print("Number of Trails =", steps)
    elif guess < number:
        print("You are a little shorter")
    else:
        print("You are a little larger")

Ausgang:

Please enter the Lower Limit0
Please enter the Upper Limit10
Guess the number5
You are a little larger
Guess the number2
You are a little shorter
Guess the number3
You are a little shorter
Guess the number4
Yes, You are correct
Number of Trails = 4

Die Ausgabe zeigt, dass das Spiel nur für einen Durchgang läuft. Es lässt den Benutzer nicht weiterspielen, bis er sich langweilt.

Wir können unser gesamtes Programm in eine weitere Schleife einschließen, die das Spiel wiederholt ausführt, bis der Benutzer das Spiel verlassen möchte.

Vollständiger Code:

import random

play = True
while play == True:
    lower_limit = int(input("Please enter the Lower Limit"))
    upper_limit = int(input("Please enter the Upper Limit"))

    number = random.randint(lower_limit, upper_limit)

    win = False
    steps = 0
    while win != True:
        guess = int(input("Guess the number"))
        steps += 1
        if guess == number:
            win = True
            print("Yes, You are correct")
            print("Number of Trails =", steps)
        elif guess < number:
            print("You are a little shorter")
        else:
            print("You are a little larger")

    replay = int(input("Enter -1 to replay the game."))
    if replay != -1:
        play = False

Ausgang:

Please enter the Lower Limit1
Please enter the Upper Limit3
Guess the number2
You are a little larger
Guess the number1
Yes, You are correct
Number of Trails = 2
Enter -1 to replay the game.-1
Please enter the Lower Limit1
Please enter the Upper Limit3
Guess the number2
You are a little larger
Guess the number1
Yes, You are correct
Number of Trails = 2
Enter -1 to replay the game.0

Wir haben eine weitere Flag-Variable, play, erstellt, die unserer äußeren oder Hauptschleife mitteilt, wann sie ihre Ausführung stoppen soll. Wenn der Benutzer eine andere Zahl als -1 angibt, stoppt die äußere Schleife die Ausführung, vorausgesetzt, der Benutzer hat es satt, dieses Spiel wiederholt zu spielen.

Es ist ein sehr einfach zu implementierendes Spiel. Wir haben lediglich das random-Modul importiert, um eine Zufallszahl in unseren Code zu generieren.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn