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

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

DDD
リリース: 2024-12-21 02:21:11
オリジナル
713 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート