На Этапе 1 мы разобрались, что у каждого значения есть тип и поведение. Теперь переходим к следующей базе: как Python принимает решения, то есть как программа выбирает ветку выполнения в зависимости от результата проверки.
В тестировании и автоматизации это встречается постоянно: мы проверяем состояние страницы, наличие элемента, код ответа API, корректность данных, статус авторизации. Везде логика одна и та же — условие либо выполняется, либо нет, и от этого зависит дальнейшее действие.
Чтобы условия были предсказуемыми, важно понимать три вещи: откуда берутся True/False, как формируются проверки через сравнения, и как if/elif/else принимает решение на основе результата. В этом этапе мы выстроим эти знания в правильной последовательности и закрепим практическими примерами.
Содержание
- True и False: откуда берутся значения истины
- Логическое выражение: что именно проверяет условие
- Операторы сравнения: базовый инструмент для условий
- Условная конструкция if / elif / else: как Python выбирает ветку
- Truthiness: почему в if можно писать не только сравнения
- Логические операторы and / or / not: как объединять проверки
- Короткое замыкание: почему некоторые части условия не выполняются
- Что здесь важно
- Практические задания — Этап 2. Условия и логика
- Задание 1. Простое сравнение
- Задание 2. if / else: проверка возраста
- Задание 3. elif: оценка по баллам
- Задание 4. and/or: сложное условие
- Задание 5. not: инверсия условия
- Контрольные вопросы — Этап 2
- Вопрос 1. Чем отличается = от ==?
- Вопрос 2. Что возвращает оператор сравнения, например 5 > 3?
- Вопрос 3. Когда срабатывает блок else?
- Вопрос 4. В чём разница между and и or?
- Вопрос 5. Что делает not?
- Мини-шпаргалка по Этапу 2
- Итог Этапа 2

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 выполняет код только если условие истинно. Это базовая конструкция ветвления, без которой невозможно написать предсказуемую логику проверок, обработку ошибок, валидацию входных данных и большинство сценариев в автотестах.

Структурно это выглядит так: после условия ставится двоеточие, а ниже идёт блок кода с отступом. В Python отступы — часть синтаксиса, поэтому “сдвиг вправо” здесь не стиль оформления, а способ показать, к чему относится блок.
Если вариантов больше двух, используется elif (“иначе если”). Python проверяет условия сверху вниз и выполняет первый блок, условие которого оказалось истинным. Если ни одно условие не подошло, срабатывает else.
Пример:
age = 17 if age >= 18:
print("Доступ разрешён")
elif age >= 16:
print("Ограниченный доступ")
else:
print("Доступ запрещён")
Логические операторы and / or / not: как объединять проверки
Когда одного сравнения недостаточно, проверки объединяют логическими операторами. Это нормальная ситуация в реальной разработке и тестировании: например, “пользователь авторизован и роль админ”, “код ответа 200 или 204”, “не истёк токен”.
and, or и not — логические операторы, названия которых напрямую отражают их значение в английском языке:
- and означает «и» — все условия должны быть истинны одновременно.
- or означает «или» — достаточно, чтобы истинным было хотя бы одно условие.
- not означает «не» — он инвертирует условие, превращая истинное в ложное и наоборот.
По смыслу эти операторы работают так же, как логика рассуждений в обычной речи, поэтому условия с and, or и not легко читать и понимать даже в сложных проверках.
Важно знать ещё одно поведение Python: and и or возвращают один из операндов, а не обязательно True/False. Это полезно для значений “по умолчанию”, но иногда удивляет новичков, поэтому лучше увидеть это на примерах.
Пример 1. and — оба условия должны быть истинны
Здесь доступ будет разрешён только в том случае, если человеку есть 18 лет и у него есть паспорт. Если хотя бы одно из условий ложно, код внутри if не выполнится.
Пример 2. or — достаточно одного истинного условия
В этом примере проверка пройдёт, если код ответа равен 200 или 204. Остальные значения приведут к тому, что if не выполнится.
Пример 3. not — отрицание условия
Оператор not инвертирует значение условия. Если пользователь не заблокирован (False), условие становится истинным, и код выполняется.
Короткое замыкание: почему некоторые части условия не выполняются
Python применяет короткое замыкание (short-circuit) при вычислении and и or. Это означает, что иногда вторая часть выражения не вычисляется, потому что результат уже понятен по первой части.
Для A and B правило такое: если A уже “ложное”, то всё выражение ложное, и B вычислять не нужно. Для A or B наоборот: если A уже “истинное”, то всё выражение истинное, и B можно не вычислять.
Практическая польза огромная: это позволяет писать безопасные проверки, которые не падают на None, и экономить вычисления. В автотестах это часто спасает от ошибок вида “у None нет атрибута”.
Пример:
Что здесь важно
Оператор and проверяет условия слева направо.
Сначала проверяется:
Так как
user = None, это условие ложное.Для
andдействует правило:если первая часть ложная, всё выражение уже ложное
Поэтому Python не проверяет вторую часть:
и просто пропускает её.
Практические задания — Этап 2. Условия и логика
Сначала попробуйте решить сами. Затем откройте решение и пояснение.
Задание 1. Простое сравнение
Даны переменные:
a = 10
b = 7Выведите результат проверок:
a > ba == ba != 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-коде.
Они станут основой для дальнейшего изучения циклов, функций и более сложных сценариев.