@Yevgeni

Как принудительно заблокировать исполнение цикла while и всех циклов что внутри него?

while turned_on:
sub_loop

Как при изменении переменной turned_on на True заблокировать исполнение цикла while и всех ранее запущенных циклов внутри него не дожидаясь завершения исполнения кода.
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 3
@vasilek-nik
Например с помощью исключений:
class BreakIt(Exception): pass

try:
    for x in range(10):
        for y in range(10):
            print x*y
            if x*y > 50:
                raise BreakIt
except BreakIt:
    pass

Здесь имеется два вложенных for'a, хотя тип цикла не принципиален. Когда нужно выйти из всех выбрасывается исключение, которое ловится после цикла.
Только не говорите, что это не ваш случай и вам нужно выходить по изменению значения переменной. Этот пример легко адаптируется под ваш случай
Ответ написан
Комментировать
@lega
return если в пределах одной ф-ии, иначе raise
Ответ написан
Комментировать
Tanner
@Tanner
Огромный человекоподобный боевой робот
Поместите внешний while в функцию; делайте return для останова всех циклов.

Управление выполнением через исключение тоже допустимо в Python, но return лучше читается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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