首頁 > 後端開發 > Python教學 > 為什麼我的遞歸 Python 函數有時會回傳「None」?

為什麼我的遞歸 Python 函數有時會回傳「None」?

DDD
發布: 2024-12-23 16:46:10
原創
799 人瀏覽過

Why Does My Recursive Python Function Return `None` Sometimes?

理解遞歸以及為什麼它不回傳任何內容

當函數呼叫自身時,稱為遞歸。這可能是一項強大的技術,但理解傳回值的概念對於防止意外結果至關重要。

在給定的 Python 程式碼中:

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",函數會按預期工作並傳回輸入。但是,當使用者輸入無效字元然後輸入有效字元時,就會出現問題。問題源自於if條件中的遞迴呼叫。

當my_var不是「a」或「b」時,函數正確提示使用者重試。但是,對 get_input() 的遞歸呼叫缺少遞歸函數傳回值的 return 語句。如果沒有正確的返回,當函數結束時,Python 會隱式返回 None。

要解決此問題,應修改遞歸呼叫以傳回遞歸函數的結果:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()
登入後複製

透過此更改,該函數將在使用者提供有效輸入後正確傳回my_var,從而防止返回None。

以上是為什麼我的遞歸 Python 函數有時會回傳「None」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板