解決遞歸函數中的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中文網其他相關文章!