ホームページ >バックエンド開発 >Python チュートリアル >再帰的入力検証関数が「a」または「b」ではなく何も返さないのはなぜですか?
None を返す再帰関数: 問題と解決策
問題:
設計された再帰関数ユーザー入力を検証して「a」または「b」を返すと、間違った入力が提供された場合に予期せず None が返されます。
関数コード:
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
期待される動作:
ユーザーが有効な入力を入力したとき (" a" または "b")、関数は次の値を返す必要があります。 my_var.
実際の動作:
ユーザーが無効な入力を入力してから「a」または「b」を入力すると、関数は有効な入力値の代わりに None を返します。 .
理由:
if ステートメント内の再帰呼び出し:
get_input()
再帰呼び出しの戻り値が関数によって返されていません。代わりに、関数は明示的に何も返さずに最後まで落ちます。 Python では、関数の末尾から外れると暗黙的に None が返されます。
解決策:
この問題を解決するには、if ステートメント内で再帰呼び出しの戻り値を返します。
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
これにより、無効な入力が提供されて修正された場合に、関数が my_var の値を正しく返すことが保証されます。意図したとおりです。
以上が再帰的入力検証関数が「a」または「b」ではなく何も返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。