我正在编写一个接受用户输入的程序。
#note: Python 2.7 users should use `raw_input`, the equivalent of 3.X's `input`
age = int(input("Please enter your age: "))
if age >= 18:
print("You are able to vote in the United States!")
else:
print("You are not able to vote in the United States.")
只要用户输入有意义的数据,该程序就会按预期运行。
C:\Python\Projects> canyouvote.py
Please enter your age: 23
You are able to vote in the United States!
但是如果用户输入无效数据,它将失败:
C:\Python\Projects> canyouvote.py
Please enter your age: dickety six
Traceback (most recent call last):
File "canyouvote.py", line 1, in <module>
age = int(input("Please enter your age: "))
ValueError: invalid literal for int() with base 10: 'dickety six'
除了崩溃,我希望程序再次请求输入。像这样:
C:\Python\Projects> canyouvote.py
Please enter your age: dickety six
Sorry, I didn't understand that.
Please enter your age: 26
You are able to vote in the United States!
输入非意义的数据时,如何使程序要求有效的输入而不是崩溃?
在这种情况下-1
,我如何才能拒绝类似的值,这是有效的int
,但却毫无意义?
在Daniel Q和Patrick Artner的出色建议的基础上,这是一个更为通用的解决方案。
我选择了显式
if
和raise
语句而不是assert
,因为可以关闭断言检查,而应该始终启用验证以提供健壮性。这可用于获取具有不同验证条件的不同种类的输入。例如:
或者,回答原始问题: