簡體   English   中英

Python 多條件輸入驗證:語法正確?

[英]Python Input Validation With Multiple Conditions: Correct Syntax?

我創建了一個簡單的程序,提示用戶猜測 1 到 20 之間的數字。最初,我的程序只是提示用戶輸入是太高還是太低。 后來我添加了一個 function,當用戶的輸入超出范圍(低於 1 或高於 20)時會提示用戶。 該程序運行良好,但是我想知道我的格式和語法是“正確”還是“正確”。

magic_number = 12

# get input from user 
user_number = int(input('What is the magic number between 1 and 20 ? '))

# attempting to create an efficient while loop
while True:
    if user_number < 12 and user_number >= 1:
        # error message 
        print('Your number is too low. Please try again.')
        # ask for input again
        user_number = int(input('What is the magic number between 1 and 20 ? '))
    elif user_number > 12 and user_number <= 20:
        # error message
        print('Your number is too high. Please try again.')
        # ask for input again
        user_number = int(input('What is the magic number between 1 and 20? '))
    elif user_number < 1 or user_number > 20:
        # error message
        print('Your number is out of range. Please try again.')
        # ask for input again
        user_number = int(input('What is the magic number between 1 and 20? '))
    elif user_number == magic_number:
        print('Congratulations! You have guessed the magic number.')
        break

如果您對格式化代碼的官方“Pythonic”方式感興趣,這就是 PEP8 規范的全部內容: https://www.python.org/dev/peps/pep-0008/

查看您的代碼,我有一些建議可以使事情變得更清潔和更易於維護:

  1. 盡量避免在多個位置硬編碼相同的常量值(例如 1、20、12)。 這樣,如果您想稍后更改它們,您只需在一個地方進行更改。
  2. 如果您可以幫助它(或將其移動到函數中),請盡量避免在多個地方重復邏輯,原因與 #1 相同。 如果你有一個錯誤,你只需要在一個地方修復它。

您可以做很多事情,但這里有一個示例,說明僅遵循這兩條評論可能會是什么樣子:

magic_number = 12

min_number = 1
max_number = 20

# attempting to create an efficient while loop
while True:
    # get input from user
    user_number = int(input('What is the magic number between {} and {} ? '.format(min_number, max_number)))

    if user_number < magic_number and user_number >= min_number:
        print('Your number is too low. Please try again.')
    elif user_number > magic_number and user_number <= max_number:
        print('Your number is too high. Please try again.')
    elif user_number < min_number or user_number > max_number:
        print('Your number is out of range. Please try again.')
    elif user_number == magic_number:
        print('Congratulations! You have guessed the magic number.')
        break

也許將來要嘗試的一些事情可能是弄清楚如果用戶不輸入數字時如何處理,或者每次使用random模塊生成不同的幻數而不是將其硬編碼為 12。

祝你好運,希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM