無回傳的遞歸函數:問題與解
問題:
問題:設計的遞歸函數驗證使用者輸入並傳回「a」或「b」在輸入不正確時意外傳回None提供並修正。
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
功能代碼:
預期行為:當使用者輸入有效時輸入(「a」或“b”),該函數應傳回以下值my_var.
實際行為:當使用者輸入無效輸入然後輸入「a」或「b」時,函數傳回None 而不是有效的輸入值.
原因:get_input()在if 語句內的遞歸呼叫:
函數未傳回調用的回傳值。相反,該函數在沒有明確返回任何內容的情況下脫離了末尾。在 Python 中,從函數末端脫落隱式傳回 None。
解決方案:if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()要解決此問題,請在if 語句中傳回遞歸呼叫的回傳值: 這確保了當提供並更正無效輸入時,函數正確傳回my_var 的值,如下所示有意為之。
以上是為什麼我的遞歸輸入驗證函數不回傳'a”或'b”,而是不傳回任何內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!