Предложение от 8host.com
Логический тип данных (или Boolean) – это примитивный тип, который принимает одно из двух возможных значений: истину (True) или ложь (False). Этот тип используется во многих языках программирования для построения алгоритмов и управления поведением программ.
Примечание: Название этого типа данных (Boolean) всегда пишется с заглавной буквы, поскольку он назван в честь математика Джорджа Буля, который занимался исследованиями математической логики. Значения True и False тоже пишутся с большой буквы – в Python они являются специальными значениями.
Данное руководство ознакомит вас с основами булевой логики в Python: операторами сравнения, логическими операторами, таблицами истинности и т.п.
Операторы сравнения
В программировании операторы сравнения используются при оценке и сравнении значений для последующего сведения их к одному логическому значению (True или False).
Операторы сравнения Python 3 представлены в этой таблице:
Оператор | Значение |
== | Проверяет равенство между компонентами; условие истинно, если компоненты равны. |
!= | Проверяет равенство между компонентами; условие истинно, если компоненты НЕ равны. |
Оценивает значение левого компонента; условие истинно, если он больше, чем правый. | |
= | Оценивает значение левого компонента; условие истинно, если он больше или равен правому компоненту. |
Попробуйте поработать с этими операторами, чтобы понять, как они действуют. Для начала создайте пару переменных:
Теперь сравните значения переменных с помощью вышеперечисленных операторов.
x = 5
y = 8
print("x == y:", x == y)
print("x != y:", x != y)
print("x y:", x > y)
print("x = y:", x >= y)
x == y: False
x != y: True
x y: False
x = y: False
Следуя математической логике, Python оценивает соотношения между значениями переменных так:
- 5 равно 8? Ложь
- 5 не равно 8? Истина
- 5 меньше 8? Истина
- 5 больше 8? Ложь
- 5 меньше или равно 8? Истина
- 5 больше или равно 8? Ложь
Также операторы сравнения можно применять к числам с плавающей точкой и строкам.
Примечание: Строки чувствительны к регистру; чтобы отключить такое поведение, нужно использовать специальный метод.
Попробуйте сравнить две строки:
Hello = "Hello"
hello = "hello"
print("Hello == hello: ", Hello == hello)
Hello == hello: False
Строки Hello и hello содержат одинаковый набор символов, однако они не равны, поскольку одна из них содержит символы верхнего регистра. Попробуйте добавить ещё одну переменную, которая также будет содержать символы верхнего регистра, а затем сравните их.
Hello = "Hello"
hello = "hello"
Hello_there = "Hello"
print("Hello == hello: ", Hello == hello)
print("Hello == Hello_there", Hello == Hello_there)
Hello == hello: False
Hello == Hello_there: True
Также для сравнения строк можно использовать операторы > и t = True
f = False
print("t != f: ", t != f)
t != f: True
Обратите внимание на разницу между операторами = и ==.
x = y # Оператор присваивания. Устанавливает равенство между x и y (то есть присваивает x значение y).
x == y # Оператор сравнения. Проверяет равенство между x и y и оценивает выражение как истинное или ложное. Выражение истинно, если x и y равны.
Логические операторы
Для сравнения значений используется три логических оператора, которые сводят результат к логическому значению True или False.
Оператор | Значение |
and | Оператор «и»: выражение истинно, если оба его компонента истинны. |
or | Оператор «или»: выражение истинно, если хотя бы один из его компонентов истинен. |
not | Оператор «не»: изменяет логическое значение компонента на противоположное. |
Логические операторы обычно используются для оценки двух или больше выражений. Например, их можно использовать в программе, которая проверит:
- сдал ли студент экзамен
- и зарегистрирован ли он.
Если оба значения истинны, студент будет переведён на следующий курс.
Другой пример: программа с логическими операторами может проверять активность пользователя в онлайн-магазине:
- использовал ли он кредит магазина
- или заказывал ли он товары в течение последних 6 месяцев.
Для примера попробуйте сравнить три выражения:
print((9 > 7) and (2 # Оба выражения истинны (True)
print((8 == 8) or (6 != 6)) # Одно из выражений истинно (True)
print(not(3 # Выражение ложно (False)
True
True
True
В первом случае оба выражения истинны, потому оператор and возвращает True.
Во втором случае истинно только значение 8 == 8. Поскольку хотя бы одно из предложенных условий истинно, оператор or возвращает True. Оператор and в таком случае выдал бы False.
В третьем случае выражение 3 print((-0.2 > 1.4) and (0.8 # Одно из выражений ложно (False)
print((7.5 == 8.9) or (9.2 != 9.2)) # Оба выражения ложны (False)
print(not(-5.7 # Выражение истинно (True)
- Поскольку в первом примере одно из выражений ложно, and вернёт False. Оператор and оценивает выражение как истинное только тогда, когда оба компонента истинны.
- Поскольку оба выражения ложны, оператор or выдаст False.
- Поскольку выражение истинно, оператор not вернёт False (not True = False).
Примечание: Если вы не понимаете, как это работает, вам помогут разобраться таблицы истинности. Эту тему мы рассмотрим далее в этом руководстве.
Логические операторы можно объединять в составные выражения:
not((-0.2 > 1.4) and ((0.8
Выражение (0.8 1.4) and (True). Оператор and выдаст False, потому что выражение -0.2 > 1.4 ложно. (False) and (True) = False.
Далее оператор not заменит полученное значение False на обратное ему логическое значение: not(False) = True. Значит, результат будет таким:
Таблицы истинности
Математическая логика – очень полезная в программировании область знаний. В данном руководстве мы ознакомимся с основными её аспектами.
Ниже представлены таблицы истинности для оператора сравнения == и всех логических операторов. Ими можно пользоваться при написании логических выражений. В таблицах перечислены общие случаи использования оператора, потому их рекомендуется выучить наизусть.
Таблица истинности оператора ==
x | == | y | Результат |
True | == | True | True |
True | == | False | False |
False | == | True | False |
False | == | False | True |
Таблица истинности оператора AND
x | and | y | Результат |
True | and | True | True |
True | and | False | False |
False | and | True | False |
False | and | False | False |
Таблица истинности оператора OR
x | or | y | Результат |
True | or | True | True |
True | or | False | True |
False | or | True | True |
False | or | False | False |
Таблица истинности оператора NOT
not | x | Результат |
not | True | False |
not | False | True |
Таблицы истинности – общие математические таблицы, которые используются в логике. Их полезно выучить наизусть, чтобы затем применять при построении алгоритмов и написании программ.
Использование логических операторов для управления потоком
Для управления результатом и потоками данных программы можно использовать условные операторы (condition) с выражениями (clause).
Условные операторы оценивают значение как истинное или ложное.
Выражение – это блок кода, который идёт после условного оператора и определяет результат программы.
Ниже приведён блок кода, который показывает, как объединить условные операторы для управления потоком программы Python.
if grade >= 65: # условие
print("Passing grade") # выражение
else:
print("Failing grade")
Эта программа оценивает результат каждого студента и определяет, сдал он экзамен или нет. К примеру, если студент набрал 83, первое условие будет иметь значение True, и программа выведет на экран строку:
Если же студент набрал 59 баллов, первое условие будет ложно, потому программа выдаст:
Читайте также: руководство PEP 8
Заключение
Данное руководство охватывает основы работы с логическими данными Python.
вторник, 10 сентября 2013 г.
Логические операции в Python
is — оператор идентичности
is not — оператор неидентичности
a = ["red", 5, None]
b = ["red", 5, None]
здесь a и b ссылаются на разные объекты
Возвращает True, если ссылка слева указывает на тот же самый объект, что и ссылка справа:
Существует понятие пустого объекта None:
a = "Oracle12c"
b = None
print(a is not None)
print(b is None)
>= — больше либо равно
>True True False False
a = ["red", 5, None]
b = ["red", 5, None]
print(a is b)
>False
Операторы сравнения могут объединяться в цепочки:
Это удобнее чем выполнять два отдельных оператора сравнения и объединения их результатов через and.
Попытка сравнить несовместимые значения вызывает исключение:
print("oracle"
builtins.TypeError: unorderable types: str()
builtins.TypeError: unorderable types: str() True
print( "python" in f )
phrase = "oracle database administration"
print( "m" in phrase )
print( "base" in phrase )
Операторы and и or вычисляются по короткой схеме и возвращают операнд.
Они не возвращают значение типа Boolean, если операнды не являются значениями типа Boolean.
x or y — if x is False, then y, else x
x and y — if x is False, then x, else y
not x — if x is False, then True, else False
Унарный оператор not оценивает свой операнд в булевом контексте и всегда возвращает значение типа Boolean.
five = 5
two = 2
zero = 0
print(five and two)
print(two and five)
print(five and zero)
Если выражение участвует в логическом контексте, результат оценивается как значение типа Boolean,
поэтому предыдущие выражения могли бы рассматриваться, как имеющие значения True, True и False
в контексте инструкции if.
five = 5
two = 2
zero = 0
nought = 0
print(five or two)
print(two or five)
print(zero or five)
print(zero or nought)
Оператор or напоминает оператор and — здесь в булевом контексте были бы получены значения
True, True, True и False.