Вопрос по if-statement, exception-handling, python, while-loop – попробуйте блок внутри оператора

2

Я только начинаю с 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: наверху, но почему это происходит?

просто удалитеbreak wim

Ваш Ответ

3   ответа
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'
18

поэтому оператор 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'
7

break заявление, которое выходит из цикла.break оператор достигается только тогда, когда в строке нет исключений.

Похожие вопросы