Булева Логіка
Джордж Буль створив те, що зараз відоме як булева алгебра, яка спирається на значення істина та хибність і визначає набір булевих операцій: not, and та or.
Ці булеві значення та оператори корисні у програмуванні, оскільки вони допомагають вам визначати порядок дій у ваших програмах.
Тип Python boolean є одним із вбудованих типів даних Python. Він використовується для представлення значення істинності виразу. Наприклад, вираз 1 < 2 є True (істина), тоді як вираз 0 == 1 є False (хибний). Розуміння того, як поводяться булеві значення у Python, є важливим для якісного програмування на Python.
Розуміння булевих функцій
Тип Boolean має лише два можливих значення:
TrueFalse
Жодне інше значення не буде мати тип 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 (ідентичність) полягає в наступному:
Чи є об’єкт ліворуч тим самим, як і об’єкт праворуч
Наприклад, якщо перед вами стоять два автомобілі однієї моделі, одного кольору і т.д. - ці автомобілі рівні, але вони не ідентичні один одному. Але якщо вам показують дві фотографії однієї і тієї ж машини, ви розумієте, що машини на цих фотографіях - це один і той же об’єкт.