在语句中尝试阻止

时间:2012-08-01 11:13:37

标签: python if-statement exception-handling while-loop

我刚开始使用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 个答案:

答案 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