
Все знают, что ключевое слово else служит для выполнения альтернативной ветки кода, если условие if не выполнилось:
x = 5 if x < 3: print("x < 3") else: print("x >= 3")
Но знали ли вы, что есть еще два примения else?
1. for/else, while/else
Если поставить else после тела цикла, то код по else будет выполнен только в том случае, если цикл завершился «нормально», т.е. в цикле не исполнилось break. Пример:
stack = [1, 3, 5, 7] while stack: if stack.pop() == 4: break else: print('not found!')
Пример. Простые числа и множители:
for n in range(2, 10): for x in range(2, n): if n % x == 0: # есть делитель, уходим print(n, '=', x, '*', n/x) break else: # цикл не нашел делителей print(n, 'простое число!')
2. try/else
В блоке try код else выполняется только в том случае, если не возникло исключений. else можно написать только после блока except, без него – нельзя. Порядок выполнения кода соответствует порядку написания сверху вниз: try → except или else → finally.
try: ... except Exception: print('Exception!') else: print('Ok!') finally: print('Bye!')
Причем else не будет также вызван, если сработавшее исключение не подпало под перечисленные except и не было обработано.
🧙 Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈