首頁 >後端開發 >Python教學 >為什麼我的遞歸輸入驗證函數不回傳'a”或'b”,而是不傳回任何內容?

為什麼我的遞歸輸入驗證函數不回傳'a”或'b”,而是不傳回任何內容?

DDD
DDD原創
2024-12-21 01:30:09141瀏覽

Why Does My Recursive Input Validation Function Return None Instead of 'a' or 'b'?

無回傳的遞歸函數:問題與解

問題:

問題:

設計的遞歸函數驗證使用者輸入並傳回「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中文網其他相關文章!

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