Условные конструкции в Python: if, elif, else
Основы условного оператора
Условные конструкции позволяют выполнять разные блоки кода в зависимости от истинности выражения. В Python основной способ записи - if, elif, else. В отличие от других языков, ключевое слово then не используется.
Как написать стандартную условную конструкцию с несколькими вариантами?
Базовый синтаксис:
if условие:
блок_кода
elif другое_условие:
блок_кода
else:
блок_кодакак на языке python записывается полное ветвление (полное ветвление в python)
Пример:
x = 10
if x > 0:
result = "Положительное"
elif x == 0:
result = "Ноль"
else:
result = "Отрицательное"
print(result)For и while python в чем разница (разница между циклами for и while в python)
Положительное
If then python 3 (условный оператор if then else в python 3)
Обязательно ставить двоеточие после условия. Отступы (обычно 4 пробела) определяют тело блока.
Типичные ошибки:
- Пропущенное двоеточие после if/elif/else.
- Неравномерные отступы (смешение пробелов и табуляции).
- Использование then - такой синтаксис вызовет ошибку
SyntaxError. - Забыть == для сравнения и написать = (присвоение).
Варианты использования
Как выполнить действие только при одном условии?
Используется только if:
if score >= 60:
print("Сдал")While языка python (цикл while в python)
Если условие ложно, блок пропускается.
Проблема:
При отсутствии альтернативы программа не сообщает о неудаче. Можно добавить else для обратной связи.
Как выбрать один из двух вариантов?
Конструкция if – else:
age = 17
if age >= 18:
access = "Разрешён"
else:
access = "Запрещён"
print(access)циклы в python конструкции (циклы while в python)
Запрещён
Match case python (конструкция match-case в python)
Выполняется ровно один из двух блоков.
Ошибка:
Попытка использовать else с условием - else условие: недопустимо. Для дополнительных условий применяется elif.
Как проверить несколько связанных условий?
Цепочка if – elif – else:
mark = 85
if mark >= 90:
grade = "A"
elif mark >= 80:
grade = "B"
elif mark >= 70:
grade = "C"
else:
grade = "D"
print(grade)операторы ветвления в языке python (условные операторы в python)
B
Return s s python (оператор return в python)
elif - сокращение от else if. Проверка идёт по порядку до первого истинного условия.
Ошибка:
Слишком много ветвлений ухудшают читаемость. Рассмотрите использование словаря или match-case (Python 3.10+).
Как вложить одно условие в другое?
Вложенные if:
num = 15
if num > 0:
if num % 2 == 0:
print("Положительное чётное")
else:
print("Положительное нечётное")
else:
print("Неположительное")
Глубину вложенности лучше ограничивать (2-3 уровня). Для сложной логики используйте логические операторы.
Проблема:
Глубокие отступы затрудняют чтение. Альтернатива: вынести проверки в отдельные функции.
Как записать условие в одну строку?
Тернарный (условный) оператор:
x = 5
message = "Положительное" if x > 0 else "Неположительное"
print(message)
Положительное
Выражение значение_если_истина if условие else значение_если_ложь. Подходит для простых присваиваний.
Ошибка:
Нельзя использовать этот оператор для выполнения действий (например, вызова нескольких функций). Он возвращает значение.
Логические операторы для сложных условий
Операторы and, or, not объединяют простые условия:
age = 20
has_license = True
if age >= 18 and has_license:
print("Можно водить")
else:
print("Нельзя")
Можно водить
Порядок вычислений: сначала not, затем and, потом or. Для ясности используйте скобки.
Типичная ошибка:
Цепочки вида if 0 < x < 10 работают корректно, но их легко спутать с if 0 < x and x < 10 - последний вариант тоже допустим.
Дополнительные примеры с пояснениями
1. Цепочка сравнений
Python допускает множественные сравнения без and:
x = 25
if 10 < x < 30:
print("x находится между 10 и 30")
else:
print("вне диапазона")
x находится между 10 и 30
Блок выполняется, если все сравнения истинны. Это более читаемо, чем if x > 10 and x < 30.
2. Проверка вхождения в коллекцию
Оператор in проверяет наличие элемента в списке, кортеже, множестве или строке:
colors = ["красный", "синий", "зелёный"]
selected = "синий"
if selected in colors:
print("Цвет доступен")
else:
print("Цвет отсутствует")
Цвет доступен
Также полезно для проверки подстроки в строке: if "def" in code.
3. Использование булевых значений
Любое значение можно интерпретировать как True или False. Пример с пустыми контейнерами:
data = []
if not data:
print("Список пуст")
else:
print("В списке есть элементы")
Список пуст
Ложными считаются: None, False, 0, пустые строки, списки, словари и т.д. Используйте это для компактных проверок.
4. Короткое замыкание (short-circuit evaluation)
Операторы and и or прекращают вычисление, как только результат становится ясен. Это позволяет избежать ошибок:
items = None
if items is not None and len(items) > 0:
print(f"Элементов: {len(items)}")
else:
print("Нет данных")
Нет данных
Если бы items было None, то len(items) вызвало бы TypeError. Благодаря and вторая часть не вычисляется.
5. Пустой блок с pass
Если синтаксически требуется блок, но действие не нужно, ставят pass:
value = 42
if value > 0:
pass # будет реализовано позже
else:
print("Отрицательное")
Используется как заглушка при разработке.
6. Вложенный тернарный оператор (с осторожностью)
Тернарный оператор можно вкладывать, но это ухудшает читаемость:
x = 7
category = "большое" if x > 10 else "среднее" if x > 5 else "малое"
print(category)
среднее
Такой код трудно понимать. Для нескольких условий лучше использовать if-elif-else.
7. Условное присвоение с or
Часто используется для выбора значения по умолчанию:
name = input("Введите имя: ") or "Гость"
print(f"Привет, {name}")
Если пользователь вводит пустую строку (ложь), то or возвращает "Гость".
8. Проверка типа с помощью isinstance
Условия могут включать проверку типа:
data = 3.14
if isinstance(data, (int, float)):
print("Число")
else:
print("Не число")
Число
isinstance принимает кортеж типов для проверки нескольких вариантов.