私はPythonでRock、Paper、Scissorsのゲームを作成しましたが、プレイヤーが無効なコマンドを入力した場合、この方法を再開するのに問題がありました。ユーザーが最初に尋ねるときに 'r'、 'p'、または 's'以外のものを入力すると、適切な値が入力されると常に値Noneが返されます。ラウンドを再開することができたことがわかったが、ゲームに賭け金を追加したときに不便であることが判明した。Python:値を取り込まずにメソッドを再起動するにはどうすればよいですか?
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)
ユーザタイプが '' 'P' が続く出力:
[R] OCK、[P] APER、または[S] cissors? a
これは有効なコマンドではありません。再試行する。
[R] ock、[P] aper、または[S] cissors? p
なし
注目すると、メソッドを「再起動」していないため、メソッドに_recursing_しています。 'rps ':'ループではないwhileの選択肢を考慮する必要があります。現在のアプローチでは、ユーザが再帰バッファをオーバーランさせてプログラムをクラッシュさせるまで無効な値を入力する可能性があります。 –