【问题标题】:try block inside while statement在 while 语句中尝试块
【发布时间】: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: 有关,但为什么会这样?

【问题讨论】:

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


    【解决方案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 语句只有在前一行没有异常时才会到达。

          【讨论】:

            猜你喜欢
            • 2020-10-09
            • 2020-06-22
            • 2012-11-18
            • 2016-03-05
            • 2012-10-02
            • 1970-01-01
            • 2011-07-25
            • 2011-02-01
            • 1970-01-01
            相关资源
            最近更新 更多