Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
else в Python — Различные применения
else в Python — это универсальный блок, который выполняется, когда основное условие НЕ выполняется. Но else работает не только с if!
1. else с if
Основной и самый известный вариант:
age = 15
if age >= 18:
print('Ты взрослый')
else:
print('Ты ребёнок')
# Output: Ты ребёнок
2. elif — цепочка условий
grade = 85
if grade >= 90:
print('Отлично')
elif grade >= 80:
print('Хорошо')
elif grade >= 70:
print('Удовлетворительно')
else:
print('Неудовлетворительно')
# Output: Хорошо
3. else с циклом for
Очень полезно, но часто упускается. else выполняется, если цикл завершился НОРМАЛЬНО (без break):
numbers = [1, 2, 3, 4, 5]
# Поиск числа 10
for num in numbers:
if num == 10:
print('Найдено!')
break
else:
print('Числа 10 нет в списке')
# Output: Числа 10 нет в списке
# Если бы было 5:
for num in numbers:
if num == 5:
print('Найдено!')
break
else:
print('Числа 5 нет в списке')
# Output: Найдено! (else НЕ выполнится, потому что был break)
Это эквивалентно:
found = False
for num in numbers:
if num == 10:
found = True
break
if not found:
print('Числа 10 нет в списке')
4. else с циклом while
То же самое, но для while:
i = 0
while i < 3:
print(i)
i += 1
else:
print('Цикл завершился нормально')
# Output:
# 0
# 1
# 2
# Цикл завершился нормально
# С break else не выполнится:
i = 0
while i < 10:
if i == 2:
print('Вышли из цикла')
break
i += 1
else:
print('Цикл завершился нормально') # Это НЕ выполнится
# Output: Вышли из цикла
5. else с try-except
else в try-except выполняется, если НЕ было исключений:
try:
result = 10 / 2
except ZeroDivisionError:
print('Деление на ноль!')
else:
print(f'Результат: {result}')
# Output: Результат: 5.0
# Со сбоем:
try:
result = 10 / 0
except ZeroDivisionError:
print('Деление на ноль!')
else:
print(f'Результат: {result}')
# Output: Деление на ноль! (else НЕ выполнится)
6. try-except-else-finally
Полная конструкция:
def read_file(filename):
try:
file = open(filename, 'r')
content = file.read()
except FileNotFoundError:
print('Файл не найден')
else:
print('Файл успешно прочитан')
print(f'Размер: {len(content)} символов')
finally:
print('Завершение операции')
if 'file' in locals():
file.close()
read_file('data.txt')
Практический пример: Поиск в базе
def find_user(user_id, users_list):
"""Поиск пользователя в списке"""
for user in users_list:
if user['id'] == user_id:
print(f'Найден: {user["name"]}')
return user
else:
print(f'Пользователь с ID {user_id} не найден')
return None
users = [
{'id': 1, 'name': 'Алиса'},
{'id': 2, 'name': 'Боб'},
{'id': 3, 'name': 'Виктор'},
]
find_user(2, users) # Output: Найден: Боб
find_user(999, users) # Output: Пользователь с ID 999 не найден
else в list comprehension
Это не совсем else, это условное выражение:
numbers = [1, 2, 3, 4, 5]
# Условное выражение (тернарный оператор)
result = [x * 2 if x % 2 == 0 else x * 3 for x in numbers]
# [3, 4, 9, 8, 15]
# Чётные * 2, нечётные * 3
Шпаргалка
# if-else
if condition:
code_if_true
else:
code_if_false
# for-else
for item in iterable:
if break_condition:
break
else:
# Выполнится, если НЕ было break
code
# while-else
while condition:
if break_condition:
break
else:
# Выполнится, если НЕ было break
code
# try-except-else
try:
code
except Exception:
code
else:
# Выполнится, если НЕ было исключения
code
На интервью
Ответи так:
"else в Python используется в разных контекстах. Основной — с if. Но менее известный факт: else можно использовать с for/while циклом, и он выполнится, если цикл завершился без break. Также else работает в try-except, выполняясь только если не было исключений. Это очень полезно для более читаемого кода без флагов."