ホームページ >バックエンド開発 >Python チュートリアル >再帰的入力検証関数が「a」または「b」ではなく何も返さないのはなぜですか?

再帰的入力検証関数が「a」または「b」ではなく何も返さないのはなぜですか?

DDD
DDDオリジナル
2024-12-21 01:30:09139ブラウズ

Why Does My Recursive Input Validation Function Return None Instead of 'a' or '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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。