Форум сайта python.su
У меня щас случилась вот такая конструкция:
for i in range(len(strings)):
while True:
count = 0
for char in strings[i]:
if char == " ": count+=1
count /= 4
strings[i] = strings[i].lstrip()
for j in xrange(count): strings[i] = "$ "+strings[i]
else: break
Офлайн
http://docs.python.org/reference/compound_stmts.html#the-for-statement
else относится к последнему for. Выполняется в случаях, если итерация по циклу завершилась корректно без вызова break. Т.е. в конкретном случае всегда.
Офлайн
Глянул док.
То есть можно назначить ещё какие действия в случае если цикл прерван, как finally в исключениях?
Офлайн
Скорее наоборот, если цикл не прерван.
Офлайн
Eliont
Но я не понял - а к чему else относится и когда срабатывает?
>>> while True:
... for i in range(3):
... print(i + 1)
... else:
... break
...
1
2
3
>>>
>>> while True:
... for i in range(5):
... print(i + 1)
... if i == 3:
... break
... else:
... break
...
1
2
3
4
1
2
3
4
>>> n = 0
>>> while n < 10:
... print(n + 1)
... n += 1
... else:
... print('while loop end')
...
1
2
3
4
5
6
7
8
9
10
while loop end
>>> n = 0
>>> while n < 10:
... print(n + 1)
... if n == 5:
... break
... n += 1
... else:
... print('while loop end')
...
1
2
3
4
5
6
>>>
Отредактировано (Дек. 13, 2010 03:35:42)
Офлайн