Книга: PyNEng
Назад: break, continue, pass
Дальше: Работа с исключениями try/except/else/finally

for/else, while/else

for/else, while/else

В циклах for и while опционально может использоваться блок else.

for/else

В цикле for:

  • блок else выполняется в том случае, если цикл завершил итерацию списка
    • но else не выполняется, если в цикле был выполнен break

Пример цикла for с else (блок else выполняется после завершения цикла for):

In [1]: for num in range(5):    ....:     print(num)    ....: else:    ....:     print("Числа закончились")    ....:      0 1 2 3 4 Числа закончились 

Пример цикла for с else и break в цикле (из-за break блок else не выполняется):

In [2]: for num in range(5):    ....:     if num == 3:    ....:         break    ....:     else:    ....:         print(num)    ....: else:    ....:     print("Числа закончились")    ....:      0 1 2 

Пример цикла for с else и continue в цикле (continue не влияет на блок else):

In [3]: for num in range(5):    ....:     if num == 3:    ....:         continue    ....:     else:    ....:         print(num)    ....: else:    ....:     print("Числа закончились")    ....:      0 1 2 4 Числа закончились 

while/else

В цикле while:

  • блок else выполняется в том случае, если цикл завершил итерацию списка
    • но else не выполняется, если в цикле был выполнен break

Пример цикла while с else (блок else выполняется после завершения цикла while):

In [4]: i = 0 In [5]: while i < 5:    ....:     print(i)    ....:     i += 1    ....: else:    ....:     print("Конец")    ....:      0 1 2 3 4 Конец 

Пример цикла while с else и break в цикле (из-за break блок else не выполняется):

In [6]: i = 0  In [7]: while i < 5:    ....:     if i == 3:    ....:         break    ....:     else:    ....:         print(i)    ....:         i += 1    ....: else:    ....:     print("Конец")    ....:      0 1 2 
Назад: break, continue, pass
Дальше: Работа с исключениями try/except/else/finally