我有一段代码。
import sys
while(True):
print "Enter a number: "
try:
number = int(sys.stdin.readline())
except ValueError:
print "Error! Enter again an integer value"
continue
finally:
print number
break
这里我希望当我输入一个非整数时,输出应为
Error! Enter again an integer value
然后它应该要求输入。但它正在打印消息,但要求进一步输入。请解释一下,或者我认为是错的。
如果我处理NameError,那么甚至不会打印错误消息,并且程序正在通过回溯调用退出。
答案 0 :(得分:2)
您的finally
应为else
,否则无论是否存在异常,都会执行。
答案 1 :(得分:2)
无论是否捕获到异常,finally
子句始终都会运行。您需要else
,它在 no 例外时运行。
另外:您不需要while
的括号,并且您可能希望raw_input
函数比使用sys.stdin
直接使用更好一些。< / p>
所以我会这样做:
while True:
try:
number = int(raw_input("Enter a number: "))
except ValueError:
print "Error! Enter again an integer value"
continue
else:
print number
break