首頁 > 後端開發 > Python教學 > 如何防止 Python 中的遞歸函數不回傳任何值?

如何防止 Python 中的遞歸函數不回傳任何值?

DDD
發布: 2024-12-21 02:21:11
原創
714 人瀏覽過

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

解決遞歸函數中的None 傳回問題

處理遞歸函數時,請確保正確的回傳處理對於避免意外的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
登入後複製

要解決此問題,必須修改if 語句以傳回遞歸get_input() 呼叫的結果:

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

合併此調整後,即使用戶輸入錯誤的字符,函數也會正確返回輸入,然後更正輸入。

以上是如何防止 Python 中的遞歸函數不回傳任何值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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