Ich habe ein Rock, Paper, Scissors-Spiel in Python erstellt, aber ich hatte Probleme, die Methode neu zu starten, wenn der Player einen ungültigen Befehl eingegeben hat. Wenn der Benutzer beim ersten Mal etwas anderes als 'r', 'p' oder 's' eingibt, wird immer der Wert None zurückgegeben, wenn ein korrekter Wert eingegeben wird. Ich fand, dass ich die Runde einfach neu starten könnte, aber als ich dem Spiel eine Wette hinzufügte, erwies es sich als Unbequemlichkeit.Python: Wie kann ich eine Methode neu starten, ohne irgendwelche Werte zu erfassen?
def get_input():
choice = input("[R]ock, [P]aper, or [S]cissors? ").lower()
if choice == 'r':
return 'rock'
elif choice == 'p':
return 'paper'
elif choice == 's':
return 'scissors'
else:
print("That is not a valid command. Try again.")
get_input()
choice = get_input()
print(choice)
die Ausgabe, wenn der Benutzer ein 'a' von einem 'p' folgt:
[R] ock, [P] aper oder [S] cissors? a
Das ist kein gültiger Befehl. Versuch es noch einmal.
[R] ock, [P] aper oder [S] cissors? p
Keine
Beachten Sie, dass Sie nicht Ihre Methode "neu starten", Sie sind _recursing_ in Ihre Methode. Sie sollten eine "while choice not in 'rps" in Betracht ziehen: 'loop stattdessen - Mit Ihrer aktuellen Methode könnte ein Benutzer ungültige Werte eingeben, bis er den Rekursionspuffer überläuft und Ihr Programm zum Absturz bringt. –