Форум сайта python.su
Ну, когда струткура сложная и много всего; чем тащить наверх через все эти колдобины флаг (тут самое сложное - не потерять его случайно :) ), проще бросить экспешн и ловить его наверху.
Отредактировано (Ноя. 6, 2008 15:05:21)
Офлайн
Или вынести циклы в метод, но чаще я использую флаг. Не красиво, правда, получается, но как иначе решить такую задачу, пока, не думал.
..bw
Офлайн
shiza
Хм. А можно пример? Просто я что-то не совсем себе представляю как это сделать. Может не очень хорошо знаю механизм исключений…
Офлайн
try:
for i in range(1, 10):
for j in range(1, 10):
for k in range(1, 10):
print i, j, k
if k == 6:
raise "goto =)"
finally:
print "Yep!"
Офлайн
Мда… Что-то я не догадался что так можно сделать.
Офлайн
ацтой решение. т.е. оно конечно рабочее, но логика не та…
надо исходить из того, где нас должно выбрасывать - если это должен быть внутренний цикл, делаем просто return того, что нам надо вернуть
если выбрасывать должно из любого уровня… то я бы делал чтото вроде:
def loop1(a, b):
ret = 0
for i in a:
if i < b:
ret = 1
break
return ret
def loop2(a, b, c):
ret = 0
for i in c:
ret = loop1(a, b)
if i < b or ret:
ret = 1
break
return ret
Офлайн