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

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

DDD
DDD原創
2024-12-21 02:21:11718瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:日期字串函數下一篇:日期字串函數