簡體   English   中英

python:輸入驗證返回

[英]python: input validation return

我試圖返回一個數字,如果它是一個INT,並且在數字之間,則在輸入字母時出現錯誤。 您還必須輸入兩次正確的值才能獲得輸入:

  def get_number():

b = False

while b == False:
    try:
        n = (input('Please enter a 6 digit number'))
    except ValueError:
        continue
    if n >= 100000 and n <= 1000000:
        b = True
        break
return n

if __name__ == '__main__':
    get_number()
    print get_number()

`

將輸入更改為raw_input,如果有人輸入字母,現在可以使用。 但是,當我輸入正確的輸入時,它將繼續循環:

def get_number():

b = False

while b == False:
    try:
        n = (raw_input('Please enter a 6 digit number'))
    except ValueError:
        continue
    if n >= 100000 and n <= 1000000:
        b = True
        break
return n

if __name__ == '__main__':
    get_number()
    print get_number()

您的代碼有一些問題。

  • 可以只使用input來評估unser輸入的內容,但這很危險; 最好使用raw_input獲取一個字符串,然后嘗試將該字符串顯式轉換為int
  • 另外, 如果您使用input ,那么您必須捕獲NameErrorSyntaxError (可能還有更多)而不是ValueError
  • 當前,您的if條件將允許輸入7位數字(1000000); 另外,您可以使用比較鏈接簡化條件
  • 不需要布爾變量; 只是break或從循環return
  • 您兩次調用函數,並且僅打印第二次調用的結果

您可以嘗試這樣的事情:

def get_number():
    while True:
        try:
            n = int(raw_input('Please enter a 6 digit number '))
            if 100000 <= n < 1000000:
                return n
        except ValueError:
            continue

if __name__ == '__main__':
    print get_number()

暫無
暫無

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

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