Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2008 15:03:46

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

как перейти к определённому участку кода?

Ну, когда струткура сложная и много всего; чем тащить наверх через все эти колдобины флаг (тут самое сложное - не потерять его случайно :) ), проще бросить экспешн и ловить его наверху.



Отредактировано (Ноя. 6, 2008 15:05:21)

Офлайн

#2 Ноя. 6, 2008 15:46:50

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

как перейти к определённому участку кода?

Или вынести циклы в метод, но чаще я использую флаг. Не красиво, правда, получается, но как иначе решить такую задачу, пока, не думал.

..bw



Офлайн

#3 Ноя. 6, 2008 16:31:33

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

как перейти к определённому участку кода?

shiza
Хм. А можно пример? Просто я что-то не совсем себе представляю как это сделать. Может не очень хорошо знаю механизм исключений…

Офлайн

#4 Ноя. 6, 2008 17:13:42

nobodyzzz
От:
Зарегистрирован: 2007-06-12
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

как перейти к определённому участку кода?

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!"
ну например так=)



Офлайн

#5 Ноя. 6, 2008 17:57:36

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

как перейти к определённому участку кода?

Мда… Что-то я не догадался что так можно сделать.

Офлайн

#6 Ноя. 10, 2008 15:13:27

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

как перейти к определённому участку кода?

ацтой решение. т.е. оно конечно рабочее, но логика не та…

надо исходить из того, где нас должно выбрасывать - если это должен быть внутренний цикл, делаем просто 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
выглядит трохец коряво, и написано больше, но с т.з. ООП вроде как получше чем гото. а выбрасывать по эксепшну имхо стоит только в том случае, когда это действительно ошибка…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version