Булевий тип: bool
Булевий тип у Python — це простий, але надзвичайно важливий тип даних, який використовується для представлення істинності або хибності. Усього два значення: True (істина) і False (хиба).
У цьому розділі:
Що таке bool?
Тип bool має два значення: - True — логічна істина,
- False — логічна хиба.
Ці значення використовуються в умовах (if, while), для перевірок, фільтрацій, циклів, виразів порівняння і логіки.
Метафора: уявіть вимикач світла. True — світло ввімкнено, False — вимкнено.
a = True
b = False
print(type(a)) #
Як отримати 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:
NoneFalse0,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_admin — bool, чи є користувач адміністратором
- is_logged_in — bool, чи користувач увійшов
Завдання: 1. Дозволити доступ, якщо користувач увійшов. 2. Дозволити доступ до панелі адміністратора, якщо користувач — адміністратор і увійшов. 3. Вивести повідомлення, якщо користувач не увійшов.
is_admin = True
is_logged_in = False
if is_logged_in:
print("Ласкаво просимо!")
if is_admin:
print("Ви адміністратор.")
else:
print("Будь ласка, увійдіть у систему.")