Урок курса

Логические значения и операторы сравнения

Python для новичков

К этому моменту вы уже работали с числами int и float, присваивали значения переменным и выводили результаты через print(). Все эти операции производили конкретные значения — числа или строки. Теперь появляется ещё один тип данных, который возникает каждый раз, когда Python отвечает на вопрос «это так?» — и ответ всегда один из двух.

Тип bool и значение None

В Python есть специальный тип данных для хранения логических значений — bool. У него ровно два возможных значения: True (истина) и False (ложь). Оба пишутся с заглавной буквы — это принципиально: true или TRUE Python не поймёт.

flag = True
print(flag)   # True

flag = False
print(flag)   # False

Значения True и False — не строки и не числа. Это отдельный тип данных, который Python использует там, где нужно ответить «да» или «нет». В следующих секциях вы увидите, как они возникают из сравнений.

None — обозначение отсутствия значения

Отдельно стоит познакомиться со значением None. Оно означает «значения нет» — не ноль, не пустая строка, а именно отсутствие какого-либо результата.

result = None
print(result)   # None

None — самостоятельный объект, не равный ни False, ни 0, ни пустой строке. Путать его с ними не стоит: это просто способ сказать «здесь пока ничего нет».

С None вы будете встречаться позже — например, когда функция не возвращает явного значения. Пока достаточно знать, что такой объект существует и что он означает.

Операторы сравнения и логическое выражение

Теперь, когда понятно, что такое True и False, нужно разобраться, откуда они берутся в реальном коде. Чаще всего — из сравнений.

Python предоставляет шесть операторов сравнения:

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

Каждый из них берёт два значения, сравнивает их и возвращает True или False. Именно возвращает — результат сравнения можно сохранить в переменную, вывести через print() или использовать дальше.

age = 20
print(age == 20)   # True
print(age != 18)   # True
print(age < 18)    # False
print(age >= 18)   # True

В каждой строке Python вычисляет выражение внутри print() и получает bool. Это и есть логическое выражение — любое выражение, результатом которого является True или False. Сравнение — самый простой способ его получить.

Операторы сравнения работают не только с числами. Строки тоже сравниваются — по алфавитному порядку:

print("apple" == "apple")   # True
print("banana" > "apple")   # True  ("b" идёт после "a")

Ошибка, которую делают почти все в начале: = вместо ==

Знак = в Python — это присваивание. Он записывает значение в переменную и не возвращает bool. Знак == — это сравнение, которое возвращает True или False.

Сравните две строки:

x = 5          # записали число 5 в переменную x
print(x == 5)  # сравнили x с числом 5 и получили True

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

Логические выражения на основе сравнений — строительный блок для управляющих конструкций, которые появятся в следующих уроках. Пока достаточно уметь их строить и понимать, что они возвращают.

Логические операторы and, or, not

Одиночное сравнение возвращает True или False, но часто нужно проверить сразу несколько условий одновременно. Для этого в Python есть три логических оператора: and, or и not.

and возвращает True, только если оба операнда истинны. Если хотя бы один ложный — результат False.

or возвращает True, если истинен хотя бы один из операндов. Ложный результат только тогда, когда оба ложные.

not работает с одним операндом и инвертирует его: not True даёт False, not FalseTrue.

age = 20
print(age >= 18 and age < 65)   # True — возраст между 18 и 64
print(age < 18 or age >= 65)    # False — ни одно из условий не выполнено
print(not age == 20)            # False — age == 20 даёт True, not инвертирует

Приоритет операторов

Когда в одном выражении встречаются несколько логических операторов, Python применяет их в определённом порядке: сначала not, потом and, потом or.

result = True or False and False
# and выполняется первым: False and False → False
# затем or: True or False → True
print(result)  # True

Если приоритет вас смущает или нужно явно задать порядок — используйте скобки. Это делает выражение нагляднее и исключает неожиданные результаты:

age = 20
score = 85
print((age >= 18) and (score >= 80))  # True

Правило простое: если сомневаетесь в порядке вычисления — расставьте скобки явно.

Процедура построения логических выражений на практике

Теперь соберём всё вместе и посмотрим, как строить логическое выражение с нуля под конкретную задачу.

Предположим, нужно проверить, что пользователю можно смотреть фильм с возрастным ограничением 18+, и при этом он купил билет. Есть две переменные: age и has_ticket. Нужно получить True или False.

Шаг 1. Определить, что сравниваем

Возраст сравниваем с числом 18. Наличие билета — само по себе логическое значение (True/False), сравнивать его ни с чем не нужно.

Шаг 2. Выбрать операторы сравнения

Для возраста подходит >=: нужно проверить, что age >= 18.

Шаг 3. Объединить через логический оператор

Оба условия должны выполняться одновременно — значит, используем and.

Шаг 4. Сохранить или вывести результат

age = 20
has_ticket = True

can_watch = age >= 18 and has_ticket
print(can_watch)  # True

Python вычисляет age >= 18 — получает True. Затем проверяет has_ticket — тоже True. and двух истинных значений даёт True. Результат сохраняется в can_watch.

Теперь поменяем условия:

age = 15
has_ticket = True

can_watch = age >= 18 and has_ticket
print(can_watch)  # False

Здесь age >= 18 возвращает False. Выражение False and True даёт False.

Ещё один сценарий: инверсия через not

Допустим, нужно проверить, что пользователь не является администратором:

is_admin = False
print(not is_admin)  # True

Или объединить несколько условий с or — например, скидка действует для студентов или пенсионеров:

age = 67
is_student = False

has_discount = is_student or age >= 65
print(has_discount)  # True

Здесь is_studentFalse, но age >= 65True. or возвращает True, потому что хотя бы один операнд истинен.

Общая схема всегда одна и та же: выбрать значения → выбрать операторы сравнения → при необходимости объединить через and/or или инвертировать через not → получить bool. Всё, что получается на выходе, можно сохранить в переменную и использовать позже — именно это и произойдёт в уроке про if/else.

Попробуйте решить

Что вернёт выражение 10 > 3 в Python?

Продолжить с проверкой и прогрессом

Откройте интерактивный раннер с заданиями урока.

Перейти к интерактивному уроку
Логические операторы в Python: bool, and, or и not | Latorn