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ステートメントに到達することはありません。

代わりに、次のように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 に答える