Булевий тип: bool

Булевий тип у Python — це простий, але надзвичайно важливий тип даних, який використовується для представлення істинності або хибності. Усього два значення: True (істина) і False (хиба).

У цьому розділі:

Що таке bool?

Тип bool має два значення: - True — логічна істина, - False — логічна хиба.

Ці значення використовуються в умовах (if, while), для перевірок, фільтрацій, циклів, виразів порівняння і логіки.

Метафора: уявіть вимикач світла. True — світло ввімкнено, False — вимкнено.

a = True
b = False
print(type(a))  # <class 'bool'>

Як отримати bool?

Безпосередньо:

flag = True
print(flag)  # True

Як результат порівняння:

print(5 > 3)   # True
print(10 == 2) # False

Через функцію bool() — приведе будь-яке значення до логічного:

print(bool(1))        # True
print(bool(0))        # False
print(bool("text"))   # True
print(bool(""))       # False

Правила приведення до bool

У Python наступні значення вважаються False:

  • None
  • False
  • 0, 0.0, 0j
  • '' (порожній рядок)
  • [], {}, (), set() (порожні колекції)

Усе інше — True.

Значення bool(...) Коментар
0 False
1 True
"" False Порожній рядок
"hello" True
[] False Порожній список
[1, 2] True
None False
{'a': 1} True

Використання у if, while, фільтрації

age = 18
if age >= 18:
    print("Доступ дозволено")
name = ""
if not name:
    print("Імʼя не вказано")
lst = [0, "", "привіт", [], 5]
filtered = list(filter(bool, lst))
print(filtered)  # ['привіт', 5]

Логічні оператори

Оператор Назва Приклад Результат
and І True and False False
or Або True or False True
not Не not True False
a = True
b = False
print(a and b)  # False
print(a or b)   # True
print(not a)    # False

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

Ось як працюють логічні оператори and, or, not для всіх можливих булевих значень:

and (логічне І)

Обидва аргументи повинні бути True.

A B A and B
False False False
False True False
True False False
True True True

or (логічне АБО)

Хоча б один аргумент повинен бути True.

A B A or B
False False False
False True True
True False True
True True True

not (логічне НЕ)

Результат — протилежне значення.

A not A
False True
True False

⚠️ Особливість: коротке замикання (short-circuit)

Python не завжди обчислює обидві частини логічного виразу. Наприклад:

def f():
    print("f викликана")
    return True

print(False and f())  # f() не буде викликана
print(True or f())    # f() не буде викликана

Порівняння з числами

True і False — це підкласи int, тому можна виконувати аріфметичні дії (хоч і не рекомендується):

print(True + True)  # 2
print(False + 1)    # 1
print(int(True))    # 1
print(int(False))   # 0

Але не зловживайте цим! Краще завжди використовувати логіку явно.

Практичне завдання: вхід до системи

Дано: - is_adminbool, чи є користувач адміністратором - is_logged_inbool, чи користувач увійшов

Завдання: 1. Дозволити доступ, якщо користувач увійшов. 2. Дозволити доступ до панелі адміністратора, якщо користувач — адміністратор і увійшов. 3. Вивести повідомлення, якщо користувач не увійшов.

is_admin = True
is_logged_in = False

if is_logged_in:
    print("Ласкаво просимо!")
    if is_admin:
        print("Ви адміністратор.")
else:
    print("Будь ласка, увійдіть у систему.")