Python. Этап 2. Логика и условия в Python: True/False, сравнения, if/elif/else

На Этапе 1 мы разобрались, что у каждого значения есть тип и поведение. Теперь переходим к следующей базе: как Python принимает решения, то есть как программа выбирает ветку выполнения в зависимости от результата проверки.

В тестировании и автоматизации это встречается постоянно: мы проверяем состояние страницы, наличие элемента, код ответа API, корректность данных, статус авторизации. Везде логика одна и та же — условие либо выполняется, либо нет, и от этого зависит дальнейшее действие.

Чтобы условия были предсказуемыми, важно понимать три вещи: откуда берутся True/False, как формируются проверки через сравнения, и как if/elif/else принимает решение на основе результата. В этом этапе мы выстроим эти знания в правильной последовательности и закрепим практическими примерами.

Содержание
Иллюстрация проверки условия if в Python с результатами True и False

True и False: откуда берутся значения истины

В основе принятия решений в программировании лежит математическая логика: любое утверждение можно оценить как истинное или ложное. В Python для этого используются два булевых значения: True и False.

Когда ты пишешь проверку (например, сравнение чисел или строк), Python не “печатает ответ”, а возвращает значение True или False. Эти значения затем используются в условиях, циклах и любых местах, где нужно выбрать поведение программы.

Важно сразу зафиксировать: True и False — это не “текст”, а значения типа bool. Их можно сохранять в переменные, возвращать из функций и комбинировать логическими операторами, как обычные данные.

Логическое выражение: что именно проверяет условие

Логическое выражение — это выражение, результат которого всегда либо True, либо False. Самый частый источник логических выражений — сравнения: “больше”, “меньше”, “равно”, “не равно”.

Когда ты пишешь 5 > 3, Python вычисляет это выражение и возвращает True. Если ты пишешь "qa" == "QA", Python возвращает False, потому что строки отличаются. Это и есть “материал”, из которого строятся условия.

Отдельно полезно понимать, что логическое выражение может быть простым (одно сравнение) или составным (несколько проверок через and/or/not). Но в любом случае оно должно давать результат, по которому можно принять решение.

Пример:

5 > 3 # True
5 == 3 # False
"qa" != "QA" # True

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

Операторы сравнения позволяют сравнивать значения и получать булев результат. По сути это “датчики”, которые отвечают на вопросы “равно ли”, “больше ли”, “меньше ли”, и именно на этих ответах строится логика ветвления.

Важно не путать присваивание и сравнение. Присваивание (=) кладёт значение в переменную, а сравнение (==) проверяет равенство и возвращает True/False. Это одна из самых частых ошибок в начале обучения.

Сравнения применяются не только к числам. В автоматизации регулярно сравнивают строки, статусы, коды ответа, значения полей, результаты функций. Поэтому этот блок — фундамент, на котором дальше будет держаться if.

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

  • == — равно
  • != — не равно
  • > — больше
  • < — меньше
  • >= — больше или равно
  • <= — меньше или равно

Условная конструкция if / elif / else: как Python выбирает ветку

Названия ключевых слов if, elif и else пришли из английского языка и напрямую отражают их смысл:

  • if — если
  • elif — иначе если (сокращение от else if)
  • else — иначе

Python читает такую конструкцию последовательно, сверху вниз: если выполняется первое условие — выполняется соответствующий блок кода; иначе если первое не подошло, проверяется следующее; иначе выполняется последний вариант, если ни одно условие не оказалось истинным.

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

Схема условных операторов if, elif и else в Python с примерами True и False

Структурно это выглядит так: после условия ставится двоеточие, а ниже идёт блок кода с отступом. В Python отступы — часть синтаксиса, поэтому “сдвиг вправо” здесь не стиль оформления, а способ показать, к чему относится блок.

Если вариантов больше двух, используется elif (“иначе если”). Python проверяет условия сверху вниз и выполняет первый блок, условие которого оказалось истинным. Если ни одно условие не подошло, срабатывает else.

Пример:

age = 17 if age >= 18:
print("Доступ разрешён")
elif age >= 16:
print("Ограниченный доступ")
else:
print("Доступ запрещён")

Truthiness: почему в if можно писать не только сравнения

Truthiness — это не специальная функция и не оператор, а удобный термин, который используют, чтобы описать поведение Python в условиях. По-русски его можно понимать как «логическая истинность значения». Truthiness отвечает на вопрос: считает ли Python это значение истинным или ложным, когда встречает его в if.

В if необязательно писать сравнение вроде x == 10. В Python можно передать просто значение, и язык сам решит, считать его истинным или ложным. Проще всего запомнить так: пусто — значит False, не пусто — значит True.

Например, пустая строка, число 0, пустой список или значение None считаются ложными. А строка с текстом, число больше нуля или список с элементами считаются истинными. Это удобно на практике: можно быстро проверить, есть ли данные, не пустой ли список или пришёл ли результат.

Пример:

text = ""
items = [1, 2, 3]
if text:
print(«Строка не пустая»)if items:
print(«Список не пустой»)

В этом примере первая проверка не выполнится, потому что строка пустая. Вторая выполнится, потому что в списке есть элементы.

Важно помнить: if не сравнивает значение с True. Он просто проверяет, “пусто это или нет”, и на основе этого принимает решение.

Логические операторы and / or / not: как объединять проверки

Когда одного сравнения недостаточно, проверки объединяют логическими операторами. Это нормальная ситуация в реальной разработке и тестировании: например, “пользователь авторизован и роль админ”, “код ответа 200 или 204”, “не истёк токен”.

and, or и not — логические операторы, названия которых напрямую отражают их значение в английском языке:

  • and означает «и» — все условия должны быть истинны одновременно.
  • or означает «или» — достаточно, чтобы истинным было хотя бы одно условие.
  • not означает «не» — он инвертирует условие, превращая истинное в ложное и наоборот.

По смыслу эти операторы работают так же, как логика рассуждений в обычной речи, поэтому условия с and, or и not легко читать и понимать даже в сложных проверках.

Важно знать ещё одно поведение Python: and и or возвращают один из операндов, а не обязательно True/False. Это полезно для значений “по умолчанию”, но иногда удивляет новичков, поэтому лучше увидеть это на примерах.

Пример 1. and — оба условия должны быть истинны

age = 20
has_passport = True
if age >= 18 and has_passport:
print(«Доступ разрешён»)

Здесь доступ будет разрешён только в том случае, если человеку есть 18 лет и у него есть паспорт. Если хотя бы одно из условий ложно, код внутри if не выполнится.

Пример 2. or — достаточно одного истинного условия

status = 200

if status == 200 or status == 204:
print(«Запрос выполнен успешно»)

В этом примере проверка пройдёт, если код ответа равен 200 или 204. Остальные значения приведут к тому, что if не выполнится.

Пример 3. not — отрицание условия

is_blocked = False

if not is_blocked:
print(«Пользователь активен»)

Оператор not инвертирует значение условия. Если пользователь не заблокирован (False), условие становится истинным, и код выполняется.

Короткое замыкание: почему некоторые части условия не выполняются

Python применяет короткое замыкание (short-circuit) при вычислении and и or. Это означает, что иногда вторая часть выражения не вычисляется, потому что результат уже понятен по первой части.

Для A and B правило такое: если A уже “ложное”, то всё выражение ложное, и B вычислять не нужно. Для A or B наоборот: если A уже “истинное”, то всё выражение истинное, и B можно не вычислять.

Практическая польза огромная: это позволяет писать безопасные проверки, которые не падают на None, и экономить вычисления. В автотестах это часто спасает от ошибок вида “у None нет атрибута”.

Пример:

user = None

# безопасно: если user is None, то user.name не вычислится
if user is not None and user.name == «Viktor»:
print(«Это Виктор»)

Что здесь важно

Оператор and проверяет условия слева направо.

  1. Сначала проверяется:

    user is not None

    Так как user = None, это условие ложное.

  2. Для and действует правило:

    если первая часть ложная, всё выражение уже ложное

  3. Поэтому Python не проверяет вторую часть:

    user.name == "Viktor"

    и просто пропускает её.

Практические задания — Этап 2. Условия и логика

Сначала попробуйте решить сами. Затем откройте решение и пояснение.

Задание 1. Простое сравнение

Даны переменные:

a = 10
b = 7

Выведите результат проверок:

  • a > b
  • a == b
  • a != b
Показать решение и пояснение
a = 10
b = 7

print(a > b)   # True
print(a == b)  # False
print(a != b)  # True

Пояснение:
10 больше 7 — это истина, поэтому True.
10 не равно 7 — это истина, поэтому True.

Задание 2. if / else: проверка возраста

Дана переменная:

age = 17

Если возраст меньше 18 — вывести "Доступ запрещён",
иначе вывести "Доступ разрешён".

Показать решение и пояснение
age = 17

if age < 18:
    print("Доступ запрещён")
else:
    print("Доступ разрешён")

Пояснение:
Условие age < 18 возвращает True или False.
Если True — выполняется блок после if, иначе блок после else.

Задание 3. elif: оценка по баллам

Дано число баллов:

score = 72

Сделайте вывод:

  • если баллы меньше 50 → "Не сдано"
  • если баллы от 50 до 79 включительно → "Сдано"
  • если баллы 80 и выше → "Отлично"
Показать решение и пояснение
score = 72

if score < 50:
    print("Не сдано")
elif score <= 79:
    print("Сдано")
else:
    print("Отлично")

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

Задание 4. and/or: сложное условие

Даны:

is_logged_in = True
is_admin = False

Нужно вывести "Доступ к настройкам", если пользователь либо администратор,
либо просто вошёл в систему. Иначе вывести "Нет доступа".

Показать решение и пояснение
is_logged_in = True
is_admin = False

if is_admin or is_logged_in:
    print("Доступ к настройкам")
else:
    print("Нет доступа")

Пояснение:
Оператор or означает «достаточно одного True».
Если пользователь админ или он вошёл в систему — доступ есть.

Задание 5. not: инверсия условия

Дана переменная:

is_blocked = False

Если пользователь НЕ заблокирован — вывести "Можно продолжать",
иначе — "Пользователь заблокирован".

Показать решение и пояснение
is_blocked = False

if not is_blocked:
    print("Можно продолжать")
else:
    print("Пользователь заблокирован")

Пояснение:
not меняет значение на противоположное:
если is_blocked равно False, то not is_blocked становится True.

Контрольные вопросы — Этап 2

Ответьте самостоятельно, затем откройте ответ и пояснение.

Вопрос 1. Чем отличается = от ==?

Показать ответ и пояснение

= присваивает значение переменной (кладёт данные в переменную).
== сравнивает значения и возвращает True или False.

Вопрос 2. Что возвращает оператор сравнения, например 5 > 3?

Показать ответ и пояснение

Он возвращает логическое значение типа bool:
либо True, либо False.

Вопрос 3. Когда срабатывает блок else?

Показать ответ и пояснение

Блок else выполняется тогда, когда условие в if
(и все условия в elif, если они есть) оказались ложными.

Вопрос 4. В чём разница между and и or?

Показать ответ и пояснение

and требует, чтобы все условия были истинными.
or требует, чтобы истинным было хотя бы одно условие.

Вопрос 5. Что делает not?

Показать ответ и пояснение

not инвертирует логическое значение:
not True становится False, а not False становится True.

Мини-шпаргалка по Этапу 2

Открыть мини-шпаргалку по Этапу 2
  • True / False — логические значения (результат проверок)
  • == сравнение, = присваивание
  • >, <, >=, <=, != — операторы сравнения
if condition:
    ...
elif other_condition:
    ...
else:
    ...

and — True только если True всё
or — True если True хоть одно
not — переворачивает True/False

Итог Этапа 2

В этом этапе разобраны основы логики и условных конструкций в Python.
Они позволяют управлять выполнением программы и выбирать разные действия
в зависимости от результатов проверок.

После изучения материала становится понятнее:

  • что такое логическое выражение и почему его результатом являются значения True или False;
  • как работают операторы сравнения (==, !=, >, <, >=, <=);
  • чем отличается присваивание значения (=) от проверки равенства (==);
  • как использовать конструкции if, elif и else для ветвления логики;
  • как объединять и инвертировать условия с помощью операторов and, or и not.

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

Комментарии

Комментариев пока нет. Почему бы ’Вам не начать обсуждение?

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *