Понимание логической логики в Python 3

Вступление

Тип данных Boolean может иметь одно из двух значений:True илиFalse. Мы используем логические значения в программировании для сравнения и управления потоком программы.

Логические значения представляют значения истинности, которые связаны с логической ветвью математики, которая предоставляет алгоритмы в информатике. Название Boolean, названное по имени математика Джорджа Буля, всегда начинается с заглавной буквы B. ЗначенияTrue иFalse также всегда будут с заглавными буквами T и F соответственно, поскольку они являются специальными значениями в Python.

В этом руководстве мы рассмотрим основы, которые вам понадобятся, чтобы понять, как работают логические значения, в том числе логические сравнения и логические операторы, а также таблицы истинности.

Операторы сравнения

В программировании операторы сравнения используются для сравнения значений и оценки до единственного логического значения либо True, либо False.

В таблице ниже показаны операторы логического сравнения.

оператор Что это значит

==

Равно

!=

Не равно

<

Меньше, чем

>

Больше чем

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

>=

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

Чтобы понять, как работают эти операторы, давайте назначим два целых числа двум переменным в программе Python:

x = 5
y = 8

Мы знаем, что в этом примере, посколькуx имеет значение5, оно меньше, чемy, которое имеет значение8.

Используя эти две переменные и связанные с ними значения, давайте рассмотрим операторы из таблицы выше. В нашей программе мы попросим Python распечатать, оценивает ли каждый оператор сравнения значение True или False. Чтобы помочь нам и другим людям лучше понять этот вывод, мы заставим Python также выводитьstring, чтобы показать нам, что он оценивает.

x = 5
y = 8

print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)
Outputx == y: False
x != y: True
x < y: True
x > y: False
x <= y: True
x >= y: False

Следуя математической логике, в каждом из приведенных выше выражений Python оценил:

  • 5 (x) равно 8 (y)? False

  • 5 не равно 8? Trueс

  • 5 меньше 8? Trueс

  • 5 больше 8? Falseс

  • 5 меньше или равно 8? Trueс

  • 5 не меньше или равно 8? Falseс

Хотя мы использовали здесь целые числа, мы могли бы заменить их значениями с плавающей точкой.

Строки также могут использоваться с логическими операторами. Они чувствительны к регистру, если вы не используете дополнительныйstring method.

Мы можем посмотреть, как строки сравниваются на практике:

Sammy = "Sammy"
sammy = "sammy"

print("Sammy == sammy: ", Sammy == sammy)
OutputSammy == sammy:  False

Строка"Sammy" выше не равна строке"sammy", потому что они не совсем то же самое; один начинается с верхнего регистраS, а другой - с нижнего регистраs. Но если мы добавим еще одну переменную, которой присвоено значение"Sammy", тогда они будут оцениваться как равные:

Sammy = "Sammy"
sammy = "sammy"
also_Sammy = "Sammy"

print("Sammy == sammy: ", Sammy == sammy)
print("Sammy == also_Sammy", Sammy == also_Sammy)
OutputSammy == sammy:  False
Sammy == also_Sammy:  True

Вы также можете использовать другие операторы сравнения, включая> и<, для сравнения двух строк. Python сравнивает эти строки лексикографически, используя значения символов ASCII.

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

t = True
f = False

print("t != f: ", t != f)
Outputt != f:  True

Вышеупомянутый блок кода оценил, чтоTrue не равноFalse.

Обратите внимание на разницу между двумя операторами= и==.

x = y   # Sets x equal to y
x == y  # Evaluates whether x is equal to y

Первый= - это оператор присваивания, который устанавливает одно значение равным другому. Второй,== - это оператор сравнения, который оценивает, равны ли два значения.

Логические Операторы

Есть три логических оператора, которые используются для сравнения значений. Они оценивают выражения до логических значений, возвращая либоTrue, либоFalse. Этими операторами являютсяand,or иnot, они определены в таблице ниже.

оператор Что это значит На что это похоже

and

Верно, если оба верны

x and y

or

Верно, если хотя бы одно верно

x or y

not

Истинно, только если ложно

not x

Логические операторы обычно используются для оценки того, являются ли два или более выражения истинными или нет. Например, их можно использовать, чтобы определить, соответствует ли оценкаand, что студент зарегистрирован в курсе, и если оба случая верны, тогда студенту будет присвоена оценка в системе. Другой пример - определить, является ли пользователь действительным активным покупателем интернет-магазина, на основании того, есть ли у него кредит магазина, совершенныйor за последние 6 месяцев.

Чтобы понять, как работают логические операторы, давайте оценим три выражения:

print((9 > 7) and (2 < 4))  # Both original expressions are True
print((8 == 8) or (6 != 6)) # One original expression is True
print(not(3 <= 1))          # The original expression is False
OutputTrue
True
True

В первом случаеprint((9 > 7) and (2 < 4)), как9 > 7, так и2 < 4 должны были оценить как True, поскольку использовался операторand.

Во втором случаеprint((8 == 8) or (6 != 6)), поскольку8 == 8 оценивается как True, не имеет значения, что6 != 6 оценивается как False, потому что использовался операторor. Если бы мы использовали операторand, это было бы False.

В третьем случаеprint(not(3 <= 1)) операторnot отменяет значение False, возвращаемое3 <=1.

Давайте заменим числа на целые и нацелимся на ложные оценки:

print((-0.2 > 1.4) and (0.8 < 3.1)) # One original expression is False
print((7.5 == 8.9) or (9.2 != 9.2)) # Both original expressions are False
print(not(-5.7 <= 0.3))             # The original expression is True

В приведенном выше примере

  • and должно иметь хотя бы одно выражение False, имеющее значение False,

  • or должно иметь оба выражения, оцениваемые как False,

  • not должно иметь внутреннее выражение True, чтобы новое выражение оценивалось как False.

Если приведенные выше результаты кажутся вам неясными, мы рассмотрим несколькоtruth tablesниже, чтобы вы быстрее освоились.

Вы также можете писать составные операторы, используяand,or иnot:

not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1)))

Давайте сначала посмотрим на самое внутреннее выражение:(0.8 < 3.1) or (0.1 == 0.1). Это выражение оценивается как True, потому что оба математических утверждения являются True.

Теперь мы можем взять возвращенное значениеTrue и объединить его со следующим внутренним выражением:(-0.2 > 1.4) and (True). В этом примере возвращаетсяFalse, поскольку математический оператор-0.2 > 1.4 имеет значение False, а(False) and (True) возвращает значение False.

Наконец, у нас есть внешнее выражение:not(False), которое оценивается как True, поэтому окончательное возвращаемое значение, если мы распечатаем этот оператор, будет:

OutputTrue

Логические операторыand,or иnot оценивают выражения и возвращают логические значения.

Таблицы правды

Можно многое узнать о логической ветви математики, но мы можем выборочно изучить некоторые из них, чтобы улучшить наше алгоритмическое мышление при программировании.

Ниже приведены таблицы истинности для оператора сравнения== и каждого из логических операторовand,or иnot. Несмотря на то, что вы можете их рассуждать, может быть полезно поработать над их запоминанием, поскольку это может ускорить процесс принятия программных решений.

== Таблица правды

x == y Возвращает

True

==

True

True

True

==

Ложь

Ложь

Ложь

==

True

Ложь

Ложь

==

Ложь

True

И таблица правды

x and y Возвращает

True

and

True

True

True

and

Ложь

Ложь

Ложь

and

True

Ложь

Ложь

and

Ложь

Ложь

ИЛИ Таблица правды

x or y Возвращает

True

or

True

True

True

or

Ложь

True

Ложь

or

True

True

Ложь

or

Ложь

Ложь

НЕ правда таблицы

not x Возвращает

not

True

Ложь

not

Ложь

True

Таблицы истинности являются общими математическими таблицами, используемыми в логике, и их полезно запомнить или запомнить при построении алгоритмов (инструкций) в компьютерном программировании.

Использование булевых операторов для управления потоком

Чтобы контролировать поток и результаты программы в форме операторов управления потоком, мы можем использоватьcondition, за которым следуетclause.

condition оценивается до логического значения Истина или Ложь, представляя точку, где в программе принимается решение. То есть условие сообщит нам, если что-то оценивается как Истина или Ложь.

clause - это блок кода, который следует заcondition и определяет результат программы. То есть это частьdo this конструкции «Еслиx истинно, то сделайте это».

В блоке кода ниже показан пример операторов сравнения, работающих в тандеме сconditional statements для управления потоком программы Python:

if grade >= 65:                 # Condition
    print("Passing grade")      # Clause

else:
    print("Failing grade")

Эта программа оценивает, является ли оценка каждого студента удовлетворительной или нет. В случае учащегося с оценкой 83, первый оператор будет оценивать какTrue, а оператор печатиPassing grade будет запущен. В случае учащегося с оценкой 59 первый оператор будет оцениваться какFalse, поэтому программа перейдет к выполнению оператора печати, привязанного к выражениюelse:Failing grade .

Поскольку каждый отдельный объект в Python может быть оценен как True или False,PEP 8 Style Guide рекомендует не сравнивать значение сTrue илиFalse, потому что оно менее читаемо и часто будет возвращать неожиданное логическое значение. То есть вы должныavoid использоватьif sammy == True: в своих программах. Вместо этого сравнитеsammy с другим не-логическим значением, которое вернет логическое значение.

Булевы операторы представляют условия, которые можно использовать для определения конечного результата программы с помощью операторов управления потоком.

Заключение

В этом руководстве были рассмотрены сравнения и логические операторы, принадлежащие к булевому типу, а также таблицы истинности и используются булевы значения для управления потоком программ.

Вы можете узнать больше о других типах данных в нашем учебнике «https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3[Understanding Types»], а также прочитать об условных выражениях в нашем учебнике «https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-python-3-2[How To Write Условные заявления].