再帰関数における None Return 問題の解決
再帰関数を扱う場合、予期しない None 値を避けるために、適切な戻り処理を確保することが重要です。ユーザーに「a」または「b」のいずれかの入力を繰り返し求める次の関数を考えてみましょう:
def get_input(): my_var = input('Enter "a" or "b": ') if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') get_input() else: return my_var print('got input:', get_input())
ユーザーが「a」または「b」を正しく入力すると、関数は期待どおりに動作しますが、他の文字を使用した場合、関数はエラー メッセージを出力し、それ自体を再帰的に呼び出します。ただし、再帰呼び出しは、収集された入力を正しく返しません。
この問題は、入力が "a" または "b" ではない場合、return ステートメントで再帰呼び出しが終了しないことから発生します。 Python はこれを関数の終わりに到達したものと解釈し、暗黙的に None を返します。この動作は次のようなものです。
def f(x): pass print(f(20)) # Implicitly returns None
この問題を解決するには、再帰的な get_input() 呼び出しの結果を返すように if ステートメントを変更する必要があります。
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
これを組み込むことで、調整すると、ユーザーが間違った文字を入力して入力を修正した場合でも、関数は入力を正しく返します。
以上がPython で再帰関数が何も返さないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。