Условия в Python
Условия позволяют программе принимать решения: выполнять один код для положительного числа и другой для отрицательного, реагировать на команды пользователя, проверять данные перед обработкой. Здесь вы освоите конструкции if, elif и else и научитесь строить вложенные проверки.
Примеры актуальны для Python 3.12 и 3.13. В добавленном разделе собраны возможности, которых нет в базовом описании: проверка истинности без сравнения, цепочки сравнений, условное выражение в одну строку и оператор match, а также ошибки, которые чаще всего встречаются в условиях у начинающих.

Содержание статьи
Условия, сделать что то, при выполнении определенного условия. Не буду много писать, и побыстрее перейдем к практике.
n = 10 # Переменная со значением 10
if n > 5: #Задаем условие, если n больше 5 то:
print(f"верно {n} больше 5") # Распечатай нам сообщение
else: # Иначе, то есть если вышеописанное условие неверное
print(f"{n} меньше или равно 5") #Распечатай нам сообщение
Я надеюсь в приведенном выше примере, все довольно ясно описано. В вышеописанном примере, мы использовали только одно условие, мы так же можем проверять несколько условий.
Синтаксис if...elif...else
И так, с тем как формируются условия для проверки одного выражения, мы с вами разобрались, теперь попробуем разобраться с тем, как формируются условия, для проверки нескольких вариантов.
Начнем с того что оператор elif, это сокращение от else...if, то есть "Иначе если", именно благодаря этому оператору мы можем проверять несколько вариантов выражений. Все довольно просто, если условие для нашего if возвращает нам False, то Python проверяет состояние уже следующего за ним условия elif, если и тут условие возвращает нам False, то идем проверять следующее, либо переходим к блоку else, в зависимости от вашего условия. В конструкциях if...else, может быть только один блок else, но могут быть несколько блоков elif. Рассмотрим небольшой пример.
number = 20 #переменная со значением 20
if number > 0: # Если number больше 0
print("Положительное число") # распечатай
elif number == 0: #Иначе, если number равен нулю
print("Равна нулю") # Распечатай
else: # Иначе
print("Отрицательное число") #Распечатай
Что бы было более понятно, я постарался отделить блоки условий друг от друга, а вам небольшое задание, сейчас написанный нами сценарий статичный, нет взаимодействия с пользователем, попробуйте добавить взаимодействие бы пользователь вводил число, и скрипт проводил вышеописанные сравнения. Обязательным условием в решении этого задания, является то, что бы пользователь мог вводить только числа. Попробуйте так же воспользоваться сервисом repl.it, иногда для меня лично удобнее быстро набросать на соседней вкладке браузера, если мой Pycharm не открыт.
Вложенные условия в Python
Вы смотрели фильм начало? Если нет я для вас оставлю ссылку на трейлер.
В общем то, логика работы вложенных условий чем то напоминают сюжет этого фильма, условия внутри условий! Попробуем более подробное разобраться с этой штукой! И так, представьте себе что внутри конструкций if...elif...else мы можем использовать дополнительные условия -конструкции, это и называется вложенными условиями, это как сон во сне, в фильме начало. В самом начале ничего не понятно, но стоит немного углубиться, и все становится на свои места. Пример работы:
number = int(input("Введите число: ")) # Просим пользователя ввести число
if number >= 0: # если число больше или равно нулю
if number == 0: # Вложенное условие, если число равно нулю
print("Ноль") # Распечатай
else: # Иначе (если число больше нуля)
print("Положительное число") # Распечатай
else: #Иначе (если все вышеописанные условия не верны)
print("Отрицательное число") # Распечатай
Следующий урок: Цикл For в Python
Больше, чем if-else: истинность, цепочки и match
Здесь разобраны такие пункты: истинность значений, цепочки сравнений, условие в одну строку, оператор match для выбора по шаблону, частые ошибки в условиях.
Истинность значений
В условии необязательно писать сравнение. Python считает ложными 0, 0.0, пустую строку, пустые список, кортеж, словарь и множество, а также None и False. Все остальное истинно.
name = input("Имя: ").strip()
if not name:
print("Имя не введено")
items = []
if items: # вместо if len(items) > 0
print("Есть товары")
Цепочки сравнений
Python позволяет записывать двойное неравенство так же, как в математике. Каждое значение вычисляется один раз, а запись короче и понятнее.
age = 25
if 18 <= age < 65: # то же, что 18 <= age and age < 65
print("Трудоспособный возраст")
Условие в одну строку
n = -7
sign = "положительное" if n > 0 else "не положительное"
print(sign) # -> не положительное
Условное выражение хорошо для простого выбора значения. Если внутри появляется вложенное условие, вернитесь к обычному if: строку станет трудно читать.
Оператор match для выбора по шаблону
С Python 3.10 длинные цепочки elif, сравнивающие одно значение, можно заменить на match:
command = input("> ").split()
match command:
case ["выход"]:
print("До свидания")
case ["привет", name]:
print(f"Привет, {name}!")
case ["сложить", a, b]:
print(int(a) + int(b))
case _:
print("Неизвестная команда")
match сравнивает не только значения, но и структуру: длину списка, ключи словаря, тип объекта. Вариант case _ срабатывает, если ничего не подошло.
Учтите одну ловушку. Голое имя в шаблоне не сравнивается с переменной, а захватывает значение: case limit: сработает всегда и запишет в limit проверяемое значение. Чтобы сравнить с константой, используйте литерал, имя с точкой вроде Color.RED или условие-охранник case x if x > limit:. Для простого выбора по значению с двумя-тремя вариантами обычный if и elif по-прежнему понятнее и не требует Python 3.10.
Частые ошибки в условиях
| Неправильно | Почему | Правильно |
|---|---|---|
if x = 5: | = это присваивание, будет SyntaxError | if x == 5: |
if color == "red" or "blue": | строка "blue" всегда истинна | if color in ("red", "blue"): |
if value == None: | сравнение с None делают через is | if value is None: |
if flag == True: | лишнее сравнение | if flag: |
Несколько if подряд вместо elif | проверяются все условия, могут сработать несколько веток | if ... elif ... else |
Как условия работают внутри циклов, показано в статье Циклы и условия Python.
Частые вопросы
Несколько вопросов, которые часто задают начинающие, и ответы на них.
Сколько блоков elif можно использовать?
Сколько угодно, ограничений нет. Но если веток больше пяти-шести и все они сравнивают одно значение, удобнее словарь соответствий или оператор match.
Обязателен ли блок else?
Нет. Если при невыполнении условия ничего делать не нужно, else просто не пишут. Блок else может быть только один и всегда стоит последним.
Как проверить несколько условий одновременно?
Объедините их логическими операторами: and требует истинности всех условий, or хотя бы одного, not инвертирует результат. Для сложных выражений ставьте скобки, чтобы порядок проверки был очевиден.
Что делать, если в блоке if пока нечего писать?
Поставьте оператор pass. Пустой блок вызывает IndentationError, а pass ничего не делает и позволяет вернуться к коду позже.