Добавить в корзинуПозвонить
Найти в Дзене
Машинное обучение

for ... else?

Рассмотрим пример использования ключевого слова else в цикле while:   >>> i = 1  >>> while i < 4: ...   print(i) ...   i += 1 ... else:  ...   print('Вышли из цикла!') Если выполнить этот цикл, то мы получим:   1 2 3 Вышли из цикла! Здесь блок else выполняется только тогда, когда условие выхода из цикла перестает быть верным. Особенность здесь в том, что если вывалиться из цикла через break или через исключение, то блок else выполняться не будет.  Это работает не только с циклами while, но и с циклами for:   >>> for value in values: ...   if value == 4: ...     print('Нашли!:)') ...   break ... else: ...   print('Не нашли:(') И так же можно с try-except блоками. На самом деле исключения в Python это не try-except-finally, а try-except-else-finally, ниже пример:     >>> num = 0 >>> try: ...   result = 1 / num ... except ZeroDivisionError: ...   print('Деление на ноль!') ... else: ...   print('Конечное число.') ... finally: ...   print('Вычисления закончены.') ...  Деление на ноль!

Рассмотрим пример использования ключевого слова else в цикле while:

 

>>> i = 1 

>>> while i < 4:

...   print(i)

...   i += 1

... else: 

...   print('Вышли из цикла!')

Если выполнить этот цикл, то мы получим:

 

1

2

3

Вышли из цикла!

Здесь блок else выполняется только тогда, когда условие выхода из цикла перестает быть верным. Особенность здесь в том, что если вывалиться из цикла через break или через исключение, то блок else выполняться не будет. 

Это работает не только с циклами while, но и с циклами for:

 

>>> for value in values:

...   if value == 4:

...     print('Нашли!:)')

...   break

... else:

...   print('Не нашли:(')

И так же можно с try-except блоками. На самом деле исключения в Python это не try-except-finally, а try-except-else-finally, ниже пример:  

 

>>> num = 0

>>> try:

...   result = 1 / num

... except ZeroDivisionError:

...   print('Деление на ноль!')

... else:

...   print('Конечное число.')

... finally:

...   print('Вычисления закончены.')

... 

Деление на ноль!

Вычисления закон#циклы #исключения #else #условия #основыelse результате деления мы получим 0 и вывод будет:

 

Конечное число.

Вычисления закончены.

Блок finally выполняется в любом случае. А else можно использовать, если нужно выполниь еще какой-то код в случае отсутствия исключений. Например, это может быть полезно в тестах, когда мы хотим логгировать как в случае падения теста на исключении, так и в случае, если исключений брошено не было.  

В общем, есть конструкции while-else и for-else, в которых else отрабатывает в случае <<штатного>> завершения цикла. Еще else можно использовать в try-except блоке, чтобы выполнить какой-то код только в случае успешного выполнения блока try. Во всех случаях использование else позволяет более гибко управлять потоком выполнения 🐍 

#python

#циклы #исключения #else #условия #основы

Python RU