W3docs

Python If...Else

Узнайте, как работают операторы if, elif и else в Python — синтаксис, операторы сравнения, логические операторы, вложенные условия и тернарный оператор.

Условные операторы позволяют программе на Python выбирать между разными путями выполнения в зависимости от того, истинно или ложно условие. В этой главе рассматриваются все формы условных операторов Python: if, if-else, if-elif-else, вложенный if и однострочное сокращение — а также операторы сравнения и логические операторы, благодаря которым условия работают.

Оператор if

Оператор if — это простейшее условие. Блок с отступом выполняется только в том случае, если условие принимает значение True.

if condition:
    # code that runs when condition is True

Пример

python— editable, runs on the server

Python использует отступы (по соглашению 4 пробела) для определения блока — фигурных скобок нет. Если условие равно False, блок просто пропускается.

Операторы сравнения

Условия строятся из выражений, которые сравнивают два значения. Каждое выражение возвращает Python booleanTrue или False.

ОператорЗначениеПримерРезультат
==Равно5 == 5True
!=Не равно5 != 3True
>Больше5 > 3True
<Меньше5 < 3False
>=Больше или равно5 >= 5True
<=Меньше или равно4 <= 5True

Полный справочник операторов, включая арифметические и операторы присваивания, см. в разделе Операторы Python.

Логические операторы

Логические операторы объединяют несколько условий в одно выражение.

ОператорВозвращает True, если…Пример
andОба условия равны Truex > 0 and x < 10
orХотя бы одно условие равно Truex < 0 or x > 100
notУсловие равно Falsenot logged_in

Пример — and

python— editable, runs on the server

Пример — or и not

day = "Saturday"
if day == "Saturday" or day == "Sunday":
    print("It is the weekend")

logged_in = False
if not logged_in:
    print("Please log in")

Оператор if-else

Добавьте ветку else, чтобы обработать случай, когда условие равно False.

if condition:
    # runs when condition is True
else:
    # runs when condition is False

Пример

python— editable, runs on the server

При каждом запуске выполняется только один из двух блоков.

Оператор if-elif-else

Используйте elif (сокращение от «else if») для последовательной проверки нескольких условий. Python проверяет их сверху вниз и выполняет первый подходящий блок. Блок else в конце является «ловушкой» для случаев, когда ни одно из условий не совпало.

if condition1:
    # runs when condition1 is True
elif condition2:
    # runs when condition2 is True and condition1 is False
elif condition3:
    # runs when condition3 is True and the above are False
else:
    # runs when none of the above are True

Количество ветвей elif не ограничено, но if может быть только один, а else — не более одного.

Пример — классификация оценок

python— editable, runs on the server

Почему важен порядок: как только Python находит истинное условие, он прекращает проверку. Если написать score >= 60 первым, оценка 95 выведет "Grade: C", потому что 95 тоже >= 60. Всегда ставьте наиболее конкретное (строгое) условие первым.

Вложенные операторы if

Оператор if может находиться внутри блока другого оператора if. Это называется вложением и удобно, когда нужно применить вторичную проверку только после прохождения первичной.

score = 85
if score >= 60:
    if score >= 90:
        print("Grade: A")
    elif score >= 80:
        print("Grade: B")
    else:
        print("Grade: C")
else:
    print("Grade: F")
# Output: Grade: B

Важно: глубокое вложение затрудняет чтение кода. Для плоских сравнений предпочтительнее цепочки elif, а при вложении более двух уровней стоит рассмотреть вынос вложенной логики в отдельную функцию.

Истинность и ложные значения

Python неявно рассматривает многие значения как True или False без использования оператора сравнения. Значениями, которые считаются False в булевом контексте, являются:

  • None
  • False
  • 0 (целый ноль), 0.0 (ноль с плавающей точкой)
  • "" (пустая строка), [] (пустой список), {} (пустой dict), () (пустой кортеж), set() (пустое множество)

Всё остальное считается True. Это позволяет писать лаконичные проверки:

name = "Alice"
if name:
    print("Name is set")      # prints because "Alice" is truthy

items = []
if not items:
    print("The list is empty") # prints because [] is falsy

value = None
if value is None:
    print("No value provided") # use 'is None' for explicit None checks

При проверке на None используйте is None / is not None (а не == None) — это принятое соглашение в Python, которое исключает случайные совпадения.

Краткая форма if (тернарное выражение)

Однострочное условное выражение в Python присваивает одно из двух значений в зависимости от условия:

value = result_if_true if condition else result_if_false

Пример

age = 20
status = "adult" if age >= 18 else "minor"
print(status)
# Output: adult

Это эквивалентно:

if age >= 18:
    status = "adult"
else:
    status = "minor"

Используйте тернарную форму для простого присваивания значений. Избегайте вложенности — a if c1 else b if c2 else c быстро становится нечитаемым.

Оператор pass

Python требует наличия хотя бы одного оператора в каждом блоке. Если нужно определить ветку if, которая намеренно ничего не делает (заглушка на время разработки), используйте pass:

x = 10
if x > 5:
    pass  # TODO: handle this case later
else:
    print("x is 5 or less")

pass — это пустая операция, которая сообщает Python: «этот блок намеренно пуст».

Оператор-морж := (Python 3.8+)

Оператор-морж присваивает значение переменной и проверяет его в одном выражении. Он наиболее полезен, когда проверяемое значение нужно внутри блока if:

numbers = [1, 2, 3, 4, 5]
if (n := len(numbers)) > 3:
    print(f"List has {n} items, which is more than 3")
# Output: List has 5 items, which is more than 3

Без := потребовалась бы отдельная строка присваивания. Скобки вокруг n := len(numbers) здесь обязательны, чтобы избежать неоднозначности.

Типичные ошибки

Использование = вместо ==

# Wrong — this is assignment, not comparison, and causes a SyntaxError in conditions
# if x = 5:

# Correct
if x == 5:
    print("x is five")

Забытое двоеточие

Каждая строка с if, elif и else должна заканчиваться :. Пропущенное двоеточие вызывает SyntaxError.

Непоследовательные отступы

Все операторы в одном блоке должны иметь одинаковый отступ. Смешивание табуляции и пробелов вызывает IndentationError. Используйте 4 пробела — это стандарт PEP 8.

Что и когда использовать

СценарийЛучший вариант
Одно условие, одно действиеif
Два взаимоисключающих путиif-else
Три и более вариантовif-elif-else
Вторичная проверка внутри веткиВложенный if
Простое присваивание значенияТернарный x if c else y
Проверка на несколько значений (Python 3.10+)Оператор match

Практика

Практика
What are the correct ways to write an if-else statement in Python?
What are the correct ways to write an if-else statement in Python?

Освоив условные операторы, логичным следующим шагом будет повторение кода с помощью циклов while в Python и циклов for в Python.

Was this page helpful?