Форум сайта python.su
0
Добрый день форумчане. Хочу решить одну маленькую проблему. В коде имеется цикл for вложенный в другой цикл for. Необходимо при определенном условии остановить цикл верхнего уровня. Брать булеву переменную и использовать ее как тригер нельзя. Хочу замутить что то похожее на JavaScript - там можно использовать оператор break и указать ему метку определяющую какой именно цикл прервать прямо сейчас. Вот код на питоне 2.7.3:
for i in Range(5):
for j in Range(10):
if i == 2:
break # тут будет прерван сложенный цикл, но не цикл верхнего уровня, а надо, чтобы был остановлен цикл _ # верхнего уровня, т.е. цикл с переменной i.
Спасибо змеи !!
Офлайн
19
нет такого если хотите можно так
for i in Range(5): for j in Range(10): if i == 2: done = True break if done: break
Отредактировано PanovSergey (Фев. 25, 2014 14:11:23)
Офлайн
20
Дурацкий конечно способ:
for i in range(5): for j in range(10): print i, j if i == 2: break else: continue break
import itertools as I for i, j in I.product(xrange(5), xrange(10)): print i, j if i == 2: break
Отредактировано bw (Фев. 25, 2014 14:30:58)
Офлайн
7
Плохое проектирование. Тогда уж лучше запихнуть это в функцию и использовать return. Но, вообще, что-то не понимаю практического применения этих циклов.
Офлайн
Чем же плохое? Такие конструкции имеют место быть, и, насчет функции- из цикла наоборот надо выносить все затратные элементы, к коим в частности функция относится. Первый пример в посте #3 прост и понятен для новичка, что там дурацкого?
Офлайн
88
Так же можно генерировать специальное исключение.
Офлайн
7
Shamanназовем это ГСИ
Так же можно генерировать специальное исключение.
Офлайн
88
IsemВ печь только не ставьте!
назовем это ГСИ
Офлайн