Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2014 13:58:59

InfinitiV2
Зарегистрирован: 2012-12-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Прерывание двойного цикла.

Добрый день форумчане. Хочу решить одну маленькую проблему. В коде имеется цикл for вложенный в другой цикл for. Необходимо при определенном условии остановить цикл верхнего уровня. Брать булеву переменную и использовать ее как тригер нельзя. Хочу замутить что то похожее на JavaScript - там можно использовать оператор break и указать ему метку определяющую какой именно цикл прервать прямо сейчас. Вот код на питоне 2.7.3:
for i in Range(5):
for j in Range(10):
if i == 2:
break # тут будет прерван сложенный цикл, но не цикл верхнего уровня, а надо, чтобы был остановлен цикл _ # верхнего уровня, т.е. цикл с переменной i.

Спасибо змеи !!

Офлайн

#2 Фев. 25, 2014 14:11:00

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  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)

Офлайн

#3 Фев. 25, 2014 14:30:14

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  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



Отредактировано bw (Фев. 25, 2014 14:30:58)

Офлайн

#4 Фев. 25, 2014 16:01:46

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Прерывание двойного цикла.

Плохое проектирование. Тогда уж лучше запихнуть это в функцию и использовать return. Но, вообще, что-то не понимаю практического применения этих циклов.



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#5 Фев. 25, 2014 16:56:58

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Прерывание двойного цикла.

Чем же плохое? Такие конструкции имеют место быть, и, насчет функции- из цикла наоборот надо выносить все затратные элементы, к коим в частности функция относится. Первый пример в посте #3 прост и понятен для новичка, что там дурацкого?

Офлайн

#6 Фев. 25, 2014 17:04:57

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Прерывание двойного цикла.

Так же можно генерировать специальное исключение.

Офлайн

#7 Фев. 25, 2014 18:24:08

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Прерывание двойного цикла.

Shaman
Так же можно генерировать специальное исключение.
назовем это ГСИ



Офлайн

#8 Фев. 25, 2014 19:04:18

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Прерывание двойного цикла.

Isem
назовем это ГСИ
В печь только не ставьте!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version