我希望能够检查输入是1到3之间的整数,到目前为止我有以下代码:
userChoice = 0
while userChoice < 1 or userChoice > 3:
userChoice = int(input("Please choose a number between 1 and 3 > "))
这使得用户重新输入一个数字,如果它不在1和3之间,但我想添加验证以确保用户无法输入可能导致值错误的字符串或异常字符。
答案 0 :(得分:3)
抓住ValueError
:
当内置操作或函数接收到参数时引发 具有正确的类型但价值不合适
示例:
while userChoice < 1 or userChoice > 3:
try:
userChoice = int(input("Please choose a number between 1 and 3 > "))
except ValueError:
print('We expect you to enter a valid integer')
实际上,由于允许的数字范围很小,您可以直接在字符串上操作:
while True:
num = input('Please choose a number between 1 and 3 > ')
if num not in {'1', '2', '3'}:
print('We expect you to enter a valid integer')
else:
num = int(num)
break
答案 1 :(得分:1)
或者尝试比较所需结果中的input
和循环中的break
,如下所示:
while True:
# python 3 use input
userChoice = raw_input("Please choose a number between 1 and 3 > ")
if userChoice in ('1', '2', '3'):
break
userChoice = int(userChoice)
print userChoice
使用Try/Except
是一种很好的方法,但是你的原始设计有一个缺陷,因为用户仍然可以输入像&#34; 1.8&#34;这不是一个整数,但会通过你的支票。