Логический - boolean

Функции, которые возвращают True или False называют предикатами. В сущности, они ничем не отличаются от обычных функций. Но термин «функция-предикат» встретится вам в литературе и на практике — лучше его запомнить.

Логический тип данных (или boolean) – это примитивный тип данных, который принимает одно из двух возможных значений: истину (true) или ложь (false). Этот тип присутствует во многих языках программирования и используется для построения алгоритмов.

Примечание: Название этого типа данных (Boolean) всегда пишется с заглавной буквы, поскольку этот тип назван в честь математика Джорджа Буля, который занимался вопросами математической логики. Значения True и False тоже пишутся с большой буквы, так как в Python они являются специальными значениями.

В языке Python булев тип данных обозначается какbool, для приведения других типов данных к булеву существует функцияbool(), работающая по следующим соглашениям:

  • строки: пустая строка — ложь, непустая строка — истина;

  • числа: нулевое число — ложь, ненулевое число (в том числе и меньшее единицы) — истина;

  • списки и кортежи: пустой список (кортеж) — ложь, непустой (даже содержащий один элемент, например пустой кортеж) — истина;

  • функции — всегда истина.

Для других объектов результат рассчитывается через метод__nonzero__, который в идеале должен возвращать значения True или False.

Булев тип приводится к следующим типам данных:

  • строковый: 'True' для истины, 'False' для лжи;

  • числовой (встроенные типы int, long, float): 1 для истины, 0 для лжи.

К другим типам данных булев тип не приводится.

Многие математические операции можно расценивать как истинные или ложные:

500 > 100 True 1 > 5 False 200 < 400 True 4 < 2 False 5 = 5 True 500 = 400 False

Как и в случае с числами, значения Boolean можно определять переменными:

my_bool = 5 > 8

Теперь можно вывести значение переменной с помощью функции print():

print(my_bool)

Поскольку 5 меньше 8, на экране появится:

False

Кроме уже известных нам целочисленных и строковых типов данных в Питоне существует также логический тип данных, который может принимать значения "истина" (True) или "ложь" (False).

По аналогии с арифметическими выражениями существуют логические выражения, которые могут быть истинными или ложными. Простое логическое выражение имеет вид <арифметическое выражение><знак сравнения><арифметическое выражение>. Например, если у нас есть переменные x и y с какими-то значениями, то логическое выражение x + y < 3 * y в качестве первого арифметического выражения имеет x + y, в качестве знака сравнения < (меньше), а второе арифметическое выражение в нём 3 * y.

В логических выражениях допустимы следующие знаки сравнений:

Знак сравнения

Описание

<

меньше

>

больше

<=

меньше либо равно

>=

больше либо равно

==

равно

!=

не равно

В Питоне допустимы и логические выражения, содержащие несколько знаков сравнения, например x < y < z. При этом все сравнения обладают одинаковым приоритетом, который меньше, чем у любой арифметической операции.

Результат вычисления логического выражения можно сохранять в переменную, которая будет иметь тип bool. Переменные такого типа, как и числа и строки, являются неизменяемыми объектами.

Строки также могут сравниваться между собой. При этом сравнение происходит в лексикографическом порядке (как упорядочены слова в словаре).

Логические операции

Чтобы записать сложное логическое выражение, часто бывает необходимо воспользоваться логическими связками "и", "или" и "не". В Питоне они обозначаются как and, or и not соответственно. Операции and и or являеются бинарными, т.е. должны быть записаны между операндами, например x < 3 or y > 2. Операция not - унарная и должна быть записана перед единственным своим операндом.

Все логические операции имеют приоритет ниже, чем операции сравнения (а значит, и ниже чем арифметические операции). Среди логических операций наивысший приоритет имеет операция not, затем идет and и наименьший приоритет имеет операция or. На порядок выполнения операций можно влиять с помощью скобок, как и в арифметических выражениях.

Предикаты

Некоторые фразы не могут быть ни правдивыми, ни лживыми: «Реши задачу», «Это утверждение ложно», «Почему небо голубое?». А предикат — это такая фраза, которая может оказаться правдой или неправдой: «этот счёт оплачен», «этот пользователь решил задачу».

В Python предикаты нужны для конструкции if. Например, вот так можно проверить, оплачен ли счёт:

Last updated