📖 Теория: bool, сравнения и логика

← К оглавлению урока

⚡ Суть темы

True и False используются, когда программа должна проверить утверждение. Сравнение чисел возвращает логическое значение, а and, or, not объединяют такие проверки в более сложные выражения.

Логический тип данных

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

# boolean_values.py
is_finished = True
has_access = False

print(is_finished)  # True
print(has_access)   # False

Приведение типов к bool

Python умеет интерпретировать значения как истинные или ложные. Ненулевые числа и непустые последовательности считаются истинными. None, 0, пустая строка и пустой список считаются ложными.

# bool_conversion.py
print(bool(5))        # True
print(bool(0))        # False
print(bool(None))     # False
print(bool([]))       # False
print(bool("Hello"))  # True
print(bool("False"))  # True: строка непустая

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

Операторы сравнения проверяют равенство, неравенство и порядок значений. Результат всегда True или False.

ОператорСмыслПримерРезультат
==равно5 == 5True
!=не равно5 != 5False
>больше3 > 5False
<меньше4 < 6True
>=больше или равно5 >= 5True
<=меньше или равно3 <= 2False

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

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

# logical_operators.py
a = 5
b = 10

print(a > 0 and b > 0)   # True
print(a > 10 or b > 0)   # True
print(not a > 3)         # False

Приоритет логических операторов

Если скобок нет, Python выполняет логические операторы в таком порядке: not, затем and, затем or.

# priority.py
a = True
b = True
c = True

print(not a or b and c)
# not True or True and True
# False or True
# True

Скобки меняют порядок и делают намерение кода явным.

Таблица истинности

ABA and BA or Bnot A
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

Двойные неравенства

Проверку диапазона можно записать как цепочку сравнений. Запись 1 < x <= 10 эквивалентна 1 < x and x <= 10, но читается короче.

# chained_comparisons.py
x = 5

print(1 < x <= 10)             # True
print(1 < x and x <= 10)       # True