2016-12-24 58 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',所以程序只是继续 –