私はPython Hangmanミニプロジェクトを完成させてコードの学習を手伝っています。2回目に呼び出された後に関数が値を返さない
私はうまくいけば、手紙を尋ねる機能を作りました。手紙が1文字だけで、数字でないことを確認します。最初の入力が正しい場合
def getLetter():
letter = raw_input('Please enter a letter...')
if letter.isdigit() == True:
print('That is a number!')
getLetter()
if len(str(letter)) >1:
print("Sorry, you have to enter exactly ONE letter")
getLetter()
else:
return letter
これはすなわち、正常に動作します:ここで
は、私がこれまで持っているコードです。 1文字しかし、入力が間違っている場合(例えば 'ddddd')、プログラムは別の文字を入力するように要求するが、新しい入力ではなく最初の入力( 'ddddd')を返すか、全く何も返さない。新しい入力を返すにはどうすればよいですか? raw_inputをクリアする必要がありますか?もしそうなら、どうですか?
再帰は、入力を検証するための最良の方法ではありません。あなたのプログラムを中断するユーザの力を過小評価してはいけません。この場合、無効な入力を何度も入力するので、最大の再帰深度に達します。ループは、入力の検証にははるかに優れたオプションです。 – DeepSpace
再帰はとても間違っていると感じます。あなたの例に従うのは混乱します。私はループがより良い選択肢だと思います。あなたは 'return'を忘れています –
John Doeに追加すると、上のコードを使うつもりなら、if文の中に' return'を加えて 'return getLetter()'にしてください。 – Newyork167