InfinitiV2
Фев. 25, 2014 13:58:59
Добрый день форумчане. Хочу решить одну маленькую проблему. В коде имеется цикл for вложенный в другой цикл for. Необходимо при определенном условии остановить цикл верхнего уровня. Брать булеву переменную и использовать ее как тригер нельзя. Хочу замутить что то похожее на JavaScript - там можно использовать оператор break и указать ему метку определяющую какой именно цикл прервать прямо сейчас. Вот код на питоне 2.7.3:
for i in Range(5):
for j in Range(10):
if i == 2:
break # тут будет прерван сложенный цикл, но не цикл верхнего уровня, а надо, чтобы был остановлен цикл _ # верхнего уровня, т.е. цикл с переменной i.
Спасибо змеи !!
PanovSergey
Фев. 25, 2014 14:11:00
нет такого если хотите можно так
for i in Range(5):
for j in Range(10):
if i == 2:
done = True
break
if done:
break
bw
Фев. 25, 2014 14:30:14
Дурацкий конечно способ:
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
Master_Sergius
Фев. 25, 2014 16:01:46
Плохое проектирование. Тогда уж лучше запихнуть это в функцию и использовать return. Но, вообще, что-то не понимаю практического применения этих циклов.
dimy44
Фев. 25, 2014 16:56:58
Чем же плохое? Такие конструкции имеют место быть, и, насчет функции- из цикла наоборот надо выносить все затратные элементы, к коим в частности функция относится. Первый пример в посте #3 прост и понятен для новичка, что там дурацкого?
Shaman
Фев. 25, 2014 17:04:57
Так же можно генерировать специальное исключение.
Isem
Фев. 25, 2014 18:24:08
Shaman
Так же можно генерировать специальное исключение.
назовем это ГСИ
Shaman
Фев. 25, 2014 19:04:18
Isem
назовем это ГСИ
В печь только не ставьте!