Булева Логіка

Джордж Буль створив те, що зараз відоме як булева алгебра, яка спирається на значення істина та хибність і визначає набір булевих операцій: not, and та or.
Ці булеві значення та оператори корисні у програмуванні, оскільки вони допомагають вам визначати порядок дій у ваших програмах.
Тип Python boolean є одним із вбудованих типів даних Python. Він використовується для представлення значення істинності виразу. Наприклад, вираз 1 < 2
є True
(істина), тоді як вираз 0 == 1
є False
(хибний). Розуміння того, як поводяться булеві значення у Python, є важливим для якісного програмування на Python.
Розуміння булевих функцій
Тип Boolean має лише два можливих значення:
True
False
Жодне інше значення не буде мати тип bool
.
>>> type(True)
<class 'bool'>
>>> type(False)
<class 'bool'>
Тип bool
є вбудованим, тобто він завжди доступний у Python. True
та False
є ключовими словами у Python і не можуть використовуватися як імена змінних, але тип bool
не є таким, і можна зробити змінну bool
, однак це вважається поганим стилем.
Булеві як числа
Булеві вирази є підтипом числового типу у Python. Це означає, що вони є числами за всіма ознаками. Іншими словами, до булевих типів можна застосовувати арифметичні операції, а також порівнювати їх з числами. Значення True
розглядається як 1, а значення False
розглядається як 0.
Існує не так багато застосувань числової природи булевих значень.
Перевірка істинності
Будь-який об’єкт можна перевірити на істинність. За замовчуванням об’єкт вважається True
, якщо його клас не визначає іншого значення. Ось більшість вбудованих об’єктів, що мають значення False
:
константні значення:
None
таFalse
нуль будь-якого числового типу:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
порожні послідовності та колекції:
''
,[]
,()
,{}
,set()
,range(0)
.
Підказка
Якщо len(something)
дорівнює 0, то something
приводиться до bool
як False
.
Логічне порівняння
У мові Python передбачено 3 логічних оператори:
Оператор |
Логічний оператор |
---|---|
|
Заперечення |
|
Кон’юнкція |
|
Диз’юнкція |
За допомогою цих операторів ви можете створювати вирази, з’єднуючи булеві вирази один з одним. Ці оператори є ключовими словами мови, тому ви не можете використовувати їх як ідентифікатори, не викликавши SyntaxError.
Початок роботи з оператором not
Оператор not
- це булевий або логічний оператор, який реалізує заперечення у Python. Він є унарним, що означає, що він приймає лише один операнд. Операндом може бути булевий вираз або будь-який об’єкт Python. Завдання not
полягає в тому, щоб змінити значення істинності свого операнда на протилежне.
|
|
---|---|
|
|
|
|
Ця функціональність робить його корисним у кількох ситуаціях:
Перевірка невиконання умов у контексті операторів
if
та циклівwhile
Інвертування значення істинності об’єкта або виразу
Перевірка, чи значення не знаходиться у заданому контейнері
Перевірка ідентичності об’єкта
Початок роботи з оператором and
Оператор and
у мові Python є двійковим, що означає, що він приймає два операнди. Операнди у виразі and
зазвичай називають умовами. Результат оператора залежить від значень істинності його операндів. Результат буде True
, якщо обоє є істинними.
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
and
працює не тільки з операндами булевого типу. Ось алгоритм:
обчислити 1-й операнд; повернути його, якщо він
False
і завершитиобчислити 2-й операнд; повернути його, якщо він
False
і завершитиповернути 2-й операнд
>>> 1 and 5
5
>>> '' and None
''
>>> 0 and True
0
>>> 5 and False
False
Початок роботи з оператором or
За допомогою булевого оператора or
ви можете об’єднати два булевих вирази в один складений вираз. Це робить or
бінарним оператором. Принаймні один з підвиразів має бути True
, щоб складений вираз вважався True
, і не має значення, який саме. Якщо обидва під-вирази мають значення False
, то вираз буде вважатися False
.
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
or
працює не тільки з операндами булевого типу. Ось алгоритм:
обчислити 1-й операнд; повернути його, якщо він
True
і завершитиобчислити 2-й операнд; повернути його, якщо він
True
і завершитиповернути 2-й операнд
>>> 42 or True
42
>>> None or []
[]
>>> 0 or True
True
>>> [[]] or ''
[[]]
Порівняння
У мові Python існує вісім операцій порівняння. Всі вони мають однаковий пріоритет (вищий, ніж у булевих операцій).
Оператор |
Значення |
---|---|
|
строго менше, ніж |
|
менше або дорівнює |
|
строго більше, ніж |
|
більше або дорівнює |
|
дорівнює (також відоме як equality порівняння) |
|
не дорівнює |
|
ідентичність об’єктів |
|
заперечення ідентичності об’єкта |
Кожен з цих операторів порівняння повертає булеве значення, завжди True
або False
.
Ви можете з’єднувати оператори порівняння ланцюжком: x < y < z
еквівалентне x < y and y < z
.
Рівність та Ідентичність
Зрозуміти різницю між ними простіше, задавши питання, на яке відповідає кожна з них.
Питання для ==
(рівності) полягає у наступному:
Чи є об’єкт зліва рівним об’єкту справа
Питання для is
(ідентичність) полягає в наступному:
Чи є об’єкт ліворуч тим самим, як і об’єкт праворуч
Наприклад, якщо перед вами стоять два автомобілі однієї моделі, одного кольору і т.д. - ці автомобілі рівні, але вони не ідентичні один одному. Але якщо вам показують дві фотографії однієї і тієї ж машини, ви розумієте, що машини на цих фотографіях - це один і той же об’єкт.