导语:
本文主要介绍了关于python面对用户无意义输入的解决的相关知识,包括python图形界面哪个好,以及为什么Python不报错不出结果这些编程知识,希望对大家有参考作用。
问题
正在编写一个接受用户输入的程序。
#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 这样的值,在这种情况下它是有效但无意义的值?
解决方法
完成此操作的最简单方法是将输入法放在 while 循环中。使用 continue 时,你将得到错误的输入并跳出循环。
当你的输入可能引发异常时
使用try和except检测用户何时输入无法解析的数据。
while True:
try:
# Note: Python 2.x users should use raw_input, the equivalent of 3.x's input
age = int(input("Please enter your age: "))
except ValueError:
print("Sorry, I didn't understand that.")
#better try again... Return to the start of the loop
continue
else:
#age was successfully parsed!
#we're ready to exit the loop.
break
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.")
实现你自己的验证规则
如果要拒绝 Python 可以成功解析的值,可以添加自己的验证逻辑。
while True:
data = input("Please enter a loud message (must be all caps): ")
if not data.isupper():
print("Sorry, your response was not loud enough.")
continue
else:
#we're happy with the value given.
#we're ready to exit the loop.
break
while True:
data = input("Pick an answer from A to D:")
if data.lower() not in ('a', 'b', 'c', 'd'):
print("Not an appropriate choice.")
else:
Break
结合异常处理和自定义验证
以上两种技术都可以组合成一个循环。
while True:
try:
age = int(input("Please enter your age: "))
except ValueError:
print("Sorry, I didn't understand that.")
continue
if age < 0:
print("Sorry, your response must not be negative.")
continue
else:
#age was successfully parsed, and we're happy with its value.
#we're ready to exit the loop.
break
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.")
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 千年前的古诗,苏轼的不知月亮上是何年何月|现在我用Python来计算出来了03/27
- ♥ Python输入三个用空格隔开的数字08/20
- ♥ Python内置比较函数cmp比较原理分析11/06
- ♥ Python中可以转换数组和矩阵吗?10/27
- ♥ python如何遍历字典10/17
- ♥ Python中CGI编程的交互10/20
内容反馈