首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while语句中的try块

while语句中的try块
EN

Stack Overflow用户
提问于 2012-08-01 19:13:37
回答 4查看 66.5K关注 0票数 6

我刚开始使用Python 2.7,我不明白为什么会发生这样的事情:

在以下代码中,来自python 2.7.2教程的示例的修饰版本,我得到了一个意外的结果:

代码语言:javascript
复制
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:有关,但为什么会发生这种情况呢?

EN

回答 4

Stack Overflow用户

发布于 2012-08-01 19:21:06

break语句正在退出循环,因此else语句将永远不会到达。

将换行放在else子句中,如下所示:

代码语言:javascript
复制
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'
票数 22
EN

Stack Overflow用户

发布于 2012-08-01 19:17:00

这可能是因为break语句离开了循环。仅当前面的行中没有异常时,才会到达break语句。

票数 8
EN

Stack Overflow用户

发布于 2014-04-22 23:56:15

不是巨蟒,但是这个怎么样?

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11758029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档