ホームページ >バックエンド開発 >Python チュートリアル >Python で再帰関数が何も返さないようにするにはどうすればよいですか?

Python で再帰関数が何も返さないようにするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-21 02:21:11731ブラウズ

How Can I Prevent Recursive Functions from Returning None in Python?

再帰関数における 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 サイトの他の関連記事を参照してください。

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