在 while 语句中尝试块
Posted
技术标签:
【中文标题】在 while 语句中尝试块【英文标题】:try block inside while statement 【发布时间】:2012-07-30 06:39:16 【问题描述】:我刚开始使用 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:
有关,但为什么会这样?
【问题讨论】:
【参考方案1】:我最近遇到了一个没有输入的问题,对于有多少测试用例 .while
循环和try-except
非常有帮助。
while(True):
try:
x=(input())
x1,x2=x.split()
print(int(x1)+int(x2))
except:
break
【讨论】:
【参考方案2】:不是蟒蛇人,但是这个怎么样
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】: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'
【讨论】:
【参考方案4】:这可能是因为break
语句离开了循环。 break
语句只有在前一行没有异常时才会到达。
【讨论】:
以上是关于在 while 语句中尝试块的主要内容,如果未能解决你的问题,请参考以下文章
Do-While 循环,但 while 语句的值在 Do 语句内