Булевий тип: 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_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("Будь ласка, увійдіть у систему.")