6

我刚开始使用 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:顶部有关,但为什么会发生呢?

4

4 回答 4

22

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'
于 2012-08-01T11:21:06.407 回答
7

这可能是因为break离开循环的语句。break只有在前一行没有异常时才到达该语句。

于 2012-08-01T11:16:59.870 回答
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'
于 2014-04-22T15:56:15.260 回答
0

我最近遇到了一个没有输入的问题,有多少测试用例。while循环,try-except非常有帮助。

while(True):
    try:
        x=(input())
        x1,x2=x.split()
        print(int(x1)+int(x2))
    except:
        break
于 2019-09-05T12:33:58.613 回答