Булевы выражения
Часто в реальной жизни мы соглашаемся с каким-либо утверждением или отрицаем его. Например, если вам скажут, что сумма чисел 3 и 5 больше 7, вы согласитесь, скажете: "Да, это правда". Если же кто-то будет утверждать, что сумма трех и пяти меньше семи, то вы расцените такое утверждение как ложное.
Подобные фразы предполагают только два возможных ответа - либо "да", когда выражение оценивается как правда, истина, либо "нет", когда утверждение оценивается как ошибочное, ложное. В программировании и математике если результатом вычисления выражения может быть лишь истина или ложь, то такое выражение называется логическим.
Например, выражение 4 > 5 является логическим, так как его результатом является либо правда, либо ложь. Выражение 4 + 5 не является логическим, так как результатом его выполнения является число.
Мы уже знакомы с некоторыми типами данных - с целыми и вещественными числами, а также со строками. Теперь мы введем четвертый тип - логический тип данных (тип bool). Его также называют булевым. У этого типа всего два возможных значения: True (правда) и False (ложь).
Булева алгебра является алгеброй логики. Она имеет дело с переменными, которые могут иметь два значения: 0(False) или 1(True) и с операциями, которые имеют логическое значение.
Самый ранний метод манипулирования символической логикой был изобретен Джорджем Булем и впоследствии стал известен как Булева алгебра. В настоящее время булева алгебра стала незаменимым инструментом в области компьютерных наук.
Запустим Python и попробуем разобраться с логическим типом данных
Здесь переменной a было присвоено значение True, после чего с помощью встроенной в Python функции type() был проверен ее тип. Python сообщил, что это переменная типа bool. Переменная b также является булевой.
В программировании False обычно приравнивают к нулю, а True - к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу
Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу
Здесь работает правило: все, что не 0 и не пустота, является правдой.
Логические операторы
Говоря на естественном языке, мы обозначаем сравнения словами "равно", "больше", "меньше". В языках программирования используются специальные знаки, подобные тем, которые используются в математике.
Простые логические операторы часто называют операторами сравнения. Рассмотрим операторы сравнения в Python
Оператор | Значение |
< | меньше (строгое неравенство, 3 < 5 равно True) |
<= | меньше либо равно (нестрогое неравенство, 3 < 5 равно True, 3 <= 3 равно True) |
> | больше (строгое неравенство, 5 > 3 равно True) |
>= | больше либо равно (нестрогое неравенство, 5 > 3 равно True, 5 >= 5 равно True) |
== | равенство (3 == 3 равно True, 4 == 3 равно False) |
!= | не равно (3 != 3 равно False, 4 != 3 равно True) |
is | равно (используется для переменных и объектов) |
is not | не равно (используется для переменных и объектов) |
in | вхождение значения в последовательность (будет рассмотрено позже) |
not in | не вхождение значения в последовательность (будет рассмотрено позже) |
Приоритет операторов сравнения и арифметических операторов
Если расположить операторы сравнения в порядке убывания приоритета , то мы получим следующую картину
<. <=, >=, >
==, !=, is, is not, in
not in
Важно! Арифметические операторы имеют приоритет выше, чем операторы сравнения.
Важно помнить и понять принципы выстраивания приоритета операций в языках программирования.
При вычислении значений выражений, сначала будут вычисляться выражения с арифметическими операторами, после чего будут вычисляться выражения с логическими операторами.
Сложные логические выражения
Логические выражения типа a >= 100 являются простыми, так как в них выполняется только одна логическая операция. Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобится получить ответ "Да" или "Нет" в зависимости от результата выполнения двух простых выражений. Например, "на улице идет снег или дождь", "переменная news больше 12 и меньше 90".
В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора - так называемые логические И (and) и ИЛИ (or).
Чтобы получить True при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все выражение будет ложным.
Чтобы получить True при использовании оператора or, необходимо, чтобы результат хотя бы одного простого выражения, входящего в состав сложного, был истинным. В случае оператора or сложное выражение становится ложным лишь тогда, тогда ложны оба составляющие его простые выражения.
Допустим, x = 8
а y = 13
. Логическое выражение y < 15 and x > 8
будет выполняться следующий образом. Сначала выполнится выражение y < 15. Его результатом будет True. Затем выполнится выражение x > 8. Его результатом будет False. Далее выражение сведется к True and False, что вернет False
В языке Python есть еще унарный оператор not
, то есть отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and и or
Число 5 трактуется как истина, отрицание дает ложь. Ноль приравнивается к False. Отрицание False дает True.
Расставим операторы сравнения и логические операторы в порядке убывания приоритета
<. <=, >=, >
==, !=, is, is not, in
not in
not
and
or
Last updated