Конструкция else: от if до for и try в Python

Раздел: Прочее -> Основы Python

Конструкция else в Python используется не только в условных операторах, но и в циклах, а также в обработке исключений. Эта конструкция позволяет выполнить код, если основное условие не сработало, цикл завершился без прерывания или исключение не возникло. Рассмотрим все варианты.

Основные варианты использования else

Как выполнить альтернативный блок кода при ложном условии?

Самый распространенный случай - условный оператор if-elif-else. После проверки условия if и опциональных elif блок else выполняется, если ни одно из предыдущих условий не оказалось истинным. Синтаксис:


if условие:
    блок_кода
elif другое_условие:
    блок_кода
else:
    блок_кода

значение в python 3 (значение в python 3)

Пример с возрастом:


age = int(input("Введите ваш возраст: "))
if age < 18:
    print("Вы несовершеннолетний")
elif age < 65:
    print("Вы взрослый")
else:
    print("Вы пенсионер")

Python любое значение (любое значение в python)

При вводе, например, 70, выведется "Вы пенсионер". Блок else выполняется только когда ни age < 18, ни age < 65 не истинны.

Типичные ошибки: забыть двоеточие после else (SyntaxError), нарушить отступы (IndentationError), использовать else с elif в неверном порядке (логическая ошибка).

Как выполнить код, если цикл завершился без break?

В Python else может следовать за циклами for и while. Блок else выполняется, если цикл завершился естественным образом (не был прерван оператором break). Если break сработал, else пропускается.


# Поиск числа в списке
numbers = [2, 4, 6, 8, 10]
target = 7
for num in numbers:
    if num == target:
        print("Найдено")
        break
else:
    print("Не найдено")

хранение значения в python (хранение значений в python)

Поскольку 7 нет в списке, break не выполнится, сработает блок else и выведет "Не найдено". Если target = 6, то выполнится break и else будет пропущен.

Типичные ошибки: путать else в цикле с обычным if-else. Некоторые полагают, что else выполняется всегда, однако это не так - только если не было break. Важно помнить, что continue не влияет на выполнение else (цикл продолжается, else сработает после естественного завершения).

Как выполнить код, если исключение не было вызвано?

Блок else может находиться после блоков except в конструкции try-except-else. Он выполняется, если в блоке try не возникло исключения. Если исключение возникло и было обработано, else не выполняется.


try:
    value = int(input("Введите число: "))
except ValueError:
    print("Ошибка: введено не число")
else:
    print(f"Вы ввели {value}")

Python arguments types (типы аргументов в python)

Если пользователь вводит "123", исключения нет, выполняется else. Если введено "abc", возникает ValueError, обрабатывается except, else игнорируется.

Типичные ошибки: располагать блок else перед except (SyntaxError), забывать, что else выполняется только при отсутствии исключений, и путать его с кодом после try, который выполняется всегда (если не было исключения или оно было обработано, но после try-finally).

Как использовать else в условном выражении (тернарный оператор)?

Короткая форма записи if-else в одну строку: выражение_если_истина if условие else выражение_если_ложь. Это не отдельная конструкция else, а часть тернарного оператора.


age = 20
status = "взрослый" if age >= 18 else "несовершеннолетний"
print(status)

Результат: "взрослый". Такой подход удобен для простых присваиваний, но не рекомендуется для сложных вложенных условий.

Типичные ошибки: перегружать условие, терять читаемость. Также путать порядок: сначала значение при True, потом if, потом else, потом значение при False.

- How to use python (как использовать python)
- как писать код на python (как писать код на python)
- Python log 2 (логарифм по основанию 2 в python)

Расширенные примеры

Пример 1: Проверка простого числа с помощью for-else

Цикл перебирает возможные делители. Если найден делитель, число составное и выполняется break. Если break не сработал, число простое и срабатывает else.

Пример

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            print(f"{num} делится на {i}")
            break
    else:
        return True
    return False

print(is_prime(17))
print(is_prime(15))
True
15 делится на 3
False

Пример 2: Обработка нескольких исключений с else

При открытии файла могут возникнуть разные ошибки. Блок else выполняется только при успешном открытии.

Пример

try:
    f = open("data.txt", "r")
except FileNotFoundError:
    print("Файл не найден")
except PermissionError:
    print("Нет прав на чтение")
else:
    content = f.read()
    print(f"Содержимое файла: {content}")
    f.close()

Пример 3: while-else с ограничением попыток

Цикл while выполняется до тех пор, пока не исчерпаны попытки или не введён правильный PIN. Если break не сработал, else выводит сообщение.

Пример

attempts = 0
max_attempts = 3
success = False
while attempts < max_attempts:
    pin = input("Введите PIN: ")
    if pin == "1234":
        print("Доступ разрешен")
        success = True
        break
    attempts += 1
else:
    print("Превышено количество попыток")
if success:
    print("Добро пожаловать")

Пример 4: Тернарный оператор с несколькими условиями

Допустимо, но ухудшает читаемость.

Пример

x = 10
result = "положительное" if x > 0 else "отрицательное" if x < 0 else "ноль"
print(result)
положительное

Конструкция else в Python - comments

En
иначе python (python)