Python错误处理的帮助
对于下面这个简单的代码片段
a = raw_input("Enter a number: ")
我该怎么写一个异常处理,让用户如果输入的是字符串,就一直提示他们重新输入,直到输入一个整数为止。
换句话说,就是不断重复这个过程,直到用户输入一个整数为止:
if a.isdigit == False:
raw_input("Try again: ")
4 个回答
1
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,如果你想让程序在用户输入的数字大于10时,显示一个特别的消息。这种情况下,我们就会用到“条件语句”。
条件语句就像是在给程序设定一个规则,只有当这个规则满足时,程序才会执行某个动作。比如说,如果你写了一个条件:“如果数字大于10,就显示‘数字很大!’”,那么只有当用户输入的数字真的大于10时,程序才会显示这个消息。
这样,我们就能控制程序的行为,让它根据不同的情况做出不同的反应。这种灵活性是编程中非常重要的一部分。
while True:
a = raw_input("Enter a number:")
try:
i = int(a)
break
except ValueError:
print "Not a number"
1
你可以使用一个 while
循环:
a = ""
while not a.isdigit():
a = raw_input("Enter a number: ")
如果你想要一个错误提示,那就可以写成这样:
a = raw_input("Enter a number: ")
while not a.isdigit():
a = raw_input("Try again: ")
2
通常实现这个功能的方法是使用 int()
函数,并加上异常处理来应对可能出现的问题:
>>> n = None
>>> while n is None:
... a = raw_input("Enter a number: ")
... try:
... n = int(a)
... except ValueError:
... print "Not a number."
...
Enter a number: abc
Not a number.
Enter a number: cauliflowers are my favourite vegetable
Not a number.
Enter a number: 12
>>>
不过,如果你想避免使用异常处理,可以尝试以下方法。需要注意的是,这种方法只接受自然数,也就是 0, 1, 2, ..., N
,不包括负整数:
>>> while True:
... a = raw_input("Enter a number: ")
... if a.isdigit():
... break
... print "Not a number."
...
Enter a number: I like beetroot too
Not a number.
Enter a number: -500
Not a number.
Enter a number: 500
>>>
如果要处理负整数,事情就会变得复杂一些,需要考虑三种情况:一种是空字符串,一种是负整数,还有一种是自然数:
>>> while True:
... a = raw_input("Enter a number: ")
... if len(a) > 0 and ((a[0] == '-' and a[1:].isdigit()) or a.isdigit()):
... break
... print "Not a number."
...
Enter a number: Celery stinks.
Not a number.
Enter a number:
Not a number.
Enter a number: -
Not a number.
Enter a number: 1
>>>