ich bin ein blutiger Anfänger und habe versucht ein kleines "Spiel" (Schere-Stein-Papier) zu schreiben mit den aktuellen Kenntnissen, die ich mit Python habe (nicht unbedingt viele ) . Es geht um einen Fehler den ich einfach nicht finde, habe mir bereits viel Zeit genommen um diesen zu finden, aber alles ohne Erfolg. Und zwar: Egal welche Zahlen ich bei der "Spielerauswahl" eingebe, die while-not-Schleife wird nach der Eingabe IMMER wiederholt, obwohl dies nur bei allen Zahlen AUßER eins, zwei und drei sein sollte und nicht beispielsweise bei vier. Ich bin schon komplett verzweifelt, weil es wahrscheinlich ein ganz primitiver Fehler ist ...
Hier ist der Code:
Code: Alles auswählen
#Schere-Stein-Papier 1.0
print("\n"*10)
import random
import time
print("----------------------WILLKOMMEN ZU DIESEM SPIEL!----------------------")
print("| Bitte wähle eine der unteren folgenden Spielfiguren |")
print("| |")
print("| Schere[1] Stein[2] Papier[3] |")
print("-----------------------------------------------------------------------")
#Variablen
figuren = ["Schere", "Stein", "Papier"]
spielen = True
while spielen:
spielerauswahl = 0
while spielerauswahl not in (1, 2, 3):
spielerauswahl = int(input("Wähle deine Spielfigur: "))
spielerfigur = figuren[spielerauswahl-1]
computerfigur = figuren[random.randint(0,2)]
if spielerfigur == computerfigur:
print("Unentschieden! Computer wählte", computerfigur)
elif spielerfigur == "Schere":
if computerfigur == "Stein":
print("Du hast verloren! Computer wählte", computerfigur)
elif spielerfigur == "Stein":
if computerfigur == "Schere":
print("Du hast gewonnen! Computer wählte", computerfigur)
elif spielerfigur == "Papier":
if computerfigur == "Schere":
print("Du hast verloren! Computer wählte", computerfigur)
elif spielerfigur == "Schere":
if computerfigur == "Papier":
print("Du hast gewonnen! Computer wählte", computerfigur)
#Restart?
time.sleep(1)
entscheidung = ""
while entscheidung not in ("y", "n"):
entscheidung = input("\nNochmal spielen? [y]Ja [n]Nein")
if entscheidung == "n":
spielen = False