попробуйте блокировать внутри while statement

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

3 Solutions collect form web for “попробуйте блокировать внутри while statement”

Оператор 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' 

Вероятно, это из-за инструкции break , которая оставляет цикл. Оператор break достигается только тогда, когда в строке нет исключения.

Не парень-питон, но как насчет этого

 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' 
  • Параллельный цикл в Python
  • Выход из цикла в Python
  • Предложение Else в инструкции Python while
  • Python While Loop, оператор and (&) не работает
  • Python: смешивание файлов и циклов
  • В то время как цикл проверяет правильность ввода пользователя?
  • замена цикла while со списком
  • python repeat program while true
  • Python - лучший язык программирования в мире.