Логический - boolean
Last updated
Last updated
Функции, которые возвращают True
или False
называют предикатами. В сущности, они ничем не отличаются от обычных функций. Но термин «функция-предикат» встретится вам в литературе и на практике — лучше его запомнить.
Логический тип данных (или boolean) – это примитивный тип данных, который принимает одно из двух возможных значений: истину (true) или ложь (false). Этот тип присутствует во многих языках программирования и используется для построения алгоритмов.
Примечание: Название этого типа данных (Boolean) всегда пишется с заглавной буквы, поскольку этот тип назван в честь математика Джорджа Буля, который занимался вопросами математической логики. Значения True и False тоже пишутся с большой буквы, так как в 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. Например, вот так можно проверить, оплачен ли счёт: