Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2011 22:41:19

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

циклы for

Поддерживаю - выходить из цикла по исключению - это совсем не то, для чего их создавали.
И даже перехват StopIteration может привести к багу, если этот цикл - в генераторе (так, что я бы использовал аж MyStopIterationException :) ).
И чем не нравится вариант pyuser? - вполне ведь подходящее и красивое решение.



Офлайн

#2 Июнь 18, 2011 17:22:47

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы for

Во-первых, насколько я понял, работает не совсем так, как хотел автор:

In [21]: for x in xrange(1, 5):
for y in xrange(1, 5):
if x<4:
print x, y
else:
break
else:
for z in xrange(1, 3):
print z
....:
....:
1 1
1 2
1 3
1 4
1
2
2 1
2 2
2 3
2 4
1
2
3 1
3 2
3 3
3 4
1
2
А во-вторых - что это за зверь такой - else без if?



Офлайн

#3 Июнь 18, 2011 20:53:26

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы for

>>> for i in range(2):
print(i)
else:
print(3)


0
1
3
>>> for i in range(2):
print(i)
break
else:
print(3)


0



Офлайн

#4 Июнь 18, 2011 21:34:56

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

циклы for

Обедающий философ
А во-вторых - что это за зверь такой - else без if?
http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops
Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the list (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement.



Отредактировано (Июнь 18, 2011 21:36:52)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version