2016-12-24 106 views
4

我想更改要求輸入數字以僅允許三位數字的要求。將用戶輸入限制爲3個整數

shootnum = None 
while True: 
    try: 
     shootnum = int(input("Enter today's shoot number > ")) 
     break 
    except ValueError: 
     print("Invalid number, please try again.") 

我需要改變以適應ValueError?

+2

只需檢查'如果100 <= shootnum <= 999' –

+2

如果整數不符合您的要求,則引發'ValueError'! –

+0

與正則表達式'^ \ d {3} $'進行比較,如果失敗,則引發'ValueError'(正則表達式可能會有所改進) –

回答

-2

你爲什麼不只是簡單的輸入限制爲3個位數:

shootnum = int(input("Enter today's shoot number > ")[:3]) 
print(shootnum) 

如果您與0開頭的數字有問題,那麼你可以做以下代替:

shootnum = (int(input("Enter today's shoot number > "))) 
shootnum = (str(shootnum)) 
shootnum = int(shootnum[:3]) 
print((shootnum)) 
+4

用戶不太清楚你截斷了他的響應,最好是提出錯誤 –

+0

我將這個選項添加到我的回答中 – Inconnu

+0

同時 – Inconnu

0

只是說:

if x <= 999 and x >= 100: 
    print("Yes") 
else: 
    print("No.") 
+0

或者更慣用的'if 100 <= x <= 999:' –

0

1個正則表達式(由馬騰法布爾的啓發)

import re 

while True: 
    try: 
     shoot = raw_input("Enter today's shoot number > ") # I use python 2.7 
     shootnum = int(shoot) 
     if not re.match(r'\d{3}$', shoot): 
      raise ValueError # can be caught by except 
     print shootnum 
    except ValueError: 
     print("Invalid number, please try again.") 

2只檢查拍攝是否是一個三位數

while True: 
    try: 
     shoot = raw_input("Enter today's shoot number > ") # I use python 2.7 
     shootnum = int(shoot) 
     if len(shoot) != 3 or shoot[0] == '-': 
      raise ValueError # can be caught by except 
     print shootnum 
    except ValueError: 
     print("Invalid number, please try again.") 

結果如下

Enter today's shoot number > qwer 
Invalid number, please try again. 
Enter today's shoot number > -12 
Invalid number, please try again. 
Enter today's shoot number > 123 
123 
Enter today's shoot number > 1222 
Invalid number, please try again. 
Enter today's shoot number > 012 
12 
Enter today's shoot number > 0122 
Invalid number, please try again. 
Enter today's shoot number > 0 
Invalid number, please try again. 
Enter today's shoot number > 00 
Invalid number, please try again. 
Enter today's shoot number > 000 
0 
Enter today's shoot number > 0000 
Invalid number, please try again. 
+0

如果我想允許數字如001一直到999? –

+0

@JonathanPetts所以三位數字可以表示數字,如001? – gaoxinge

0

只是檢查長度

user_input = input() 
if len(user_input.strip()) != 3: 
    raise Exception('3 digits allowed') 

你仍然需要檢查輸入的是一個數字

+0

爲什麼不提高'ValueError',所以程序只是繼續 –