我刚开始使用Python 2.7而且我不明白为什么会发生什么事情:
在下面的代码中,来自python 2.7.2教程的一个示例的装饰版本,我得到了一个意想不到的结果:
while True:
try:
x = int(raw_input("Please enter a number: "))
break
except ValueError:
print "Oops! That was not a valid number. Try again..."
else:
print 'Thanks,',x,'is indeed an integer'
finally:
print 'all done, bye'
当我输入一个整数时,代码会忽略else:
语句并直接切换到finally:
。显然,它与顶部的while True:
有关,但为什么会发生?
答案 0 :(得分:19)
break语句退出循环,因此永远不会达到else语句。
将break放在else子句中,如下所示:
while True:
try:
x = int(raw_input("Please enter a number: "))
except ValueError:
print "Oops! That was not a valid number. Try again..."
else:
print 'Thanks,',x,'is indeed an integer'
break
print 'all done, bye'
答案 1 :(得分:7)
可能是因为break
语句离开了循环。仅当前一行中没有异常时才会到达break
语句。
答案 2 :(得分:3)
不是蟒蛇人,但这个怎么样
while True:
try:
x = int(raw_input("Please enter a number: "))
print 'Thanks,', x, 'is indeed an integer'
except ValueError:
print "Oops! That was not a valid number. Try again..."
finally:
print 'all done, bye'
答案 3 :(得分:0)
我最近遇到了一个问题,对于多少个测试用例。while
循环和try-except
毫无用处。
while(True):
try:
x=(input())
x1,x2=x.split()
#print(x1,x2)
print(int(x1)+int(x2))
except:
break