首頁 > 後端開發 > Python教學 > 如何確保我的程式能夠妥善處理無效的使用者輸入?

如何確保我的程式能夠妥善處理無效的使用者輸入?

Linda Hamilton
發布: 2024-12-24 14:50:11
原創
745 人瀏覽過

How Can I Ensure My Program Handles Invalid User Input Gracefully?

請求使用者輸入,直到提供有效回應

問題

輸入驗證對於確保依賴使用者的程式中準確收集資料至關重要交互作用。然而,在處理意外或無效資料時,驗證使用者輸入可能具有挑戰性。這可能會導致程式崩潰或不正確的結果。

解決方案 1:使用異常處理進行循環

最常見的方法是使用帶有 try 和 except 區塊的 while 迴圈來處理解析時引發的異常輸入。例如:

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Invalid input. Please enter a valid age:")
        continue
    else:
        break
登入後複製

解決方案2:使用自訂驗證循環

如果您需要超出Python 處理範圍的更具體驗證,您可以實現自訂邏輯:

while True:
    data = input("Please enter a loud message (must be all caps): ")
    if not data.isupper():
        print("Input must be all caps. Please enter a loud message:")
        continue
    else:
        break
登入後複製

解決方案3:結合異常處理和自訂驗證

結合這兩種解決方案提供了管理的靈活性不同的驗證要求:

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Invalid input. Please enter a valid age:")
        continue

    if age < 0:
        print("Age cannot be negative. Please enter a valid age:")
        continue
    else:
        break
登入後複製

解決方案4:可重複使用輸入函數

如果需要一致地驗證多個輸入,請考慮建立可重複使用函數:

def get_valid_input(prompt, type_=int, min_=None, max_=None, range_=None):
    while True:
        try:
            value = type_(input(prompt))
        except ValueError:
            print("Invalid input. Please enter a valid value:")
            continue

        if min_ is not None and value < min_:
            print("Value must be greater than or equal to {}. Please enter a valid value:".format(min_))
            continue
        elif max_ is not None and value > max_:
            print("Value must be less than or equal to {}. Please enter a valid value:".format(max_))
            continue
        elif range_ is not None and value not in range_:
            print("Value must be in the range {}. Please enter a valid value:".format(range_))
            continue
        else:
            return value
登入後複製

避免常見陷阱

  • 冗餘輸入語句: 使用while True 和循環而不是多個輸入呼叫。
  • 使用遞歸進行輸入驗證: 這種方法可能會導致堆疊溢位。堅持循環。

結論

透過實現這些技術,您可以確保您的程式妥善處理使用者輸入,防止崩潰並收集準確的資料。

以上是如何確保我的程式能夠妥善處理無效的使用者輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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