Понимание Booleans логики в Python 3

Вступление

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

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

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

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

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

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

оператор Что это означает
== Равно
!= Не равен
< Меньше, чем
> Лучше чем
<= Меньше или равно
> = Больше или равно

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

x = 5
y = 8

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

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

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)
Output
x == y: False
x != y: True
x < y: True
x > y: False
x <= y: True
x >= y: False

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

  • Является ли 5 ​​( x) равным 8 ( y)? Ложь
  • Является ли 5 ​​не равным 8? Правда
  • Является ли 5 ​​менее 8? Правда
  • Является ли 5 ​​больше 8? Ложь
  • 5 меньше или равно 8? Правда
  • Является ли 5 ​​не менее или равным 8? Ложь

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

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

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

Sammy = "Sammy"
sammy = "sammy"

print("Sammy == sammy: ", Sammy == sammy)
Output
Sammy == 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)
Output
Sammy == sammy:  False
Sammy == also_Sammy:  True

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

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

t = True
f = False

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

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

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

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

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

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

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

оператор Что это означает На что это похоже
а также Истинно, если оба истины x and y
или же Истина, если хотя бы одно верно x or y
не Истинно, только если false not x

Логические операторы обычно используются для оценки того, являются ли два или более выражения истинными или неверными. Например, они могут использоваться для определения, проходит ли оценка и что студент зарегистрирован в курсе, и если оба случая являются истинными, тогда ученику будет присвоен класс в системе. Другим примером может быть определение того, является ли пользователь действительным активным клиентом интернет-магазина на основе того, есть ли у них кредит в магазине или совершил покупку за последние 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
Output
True
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оператор инвертирует значение Ложь , которая 3 <=1возвращает.

Давайте заменим float для целых чисел и будем стремиться к ложным оценкам:

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.

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

Вы также можете написать составные операторы , используя andorи 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.4False и (False) and (True)возвращает False.

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

Output
True

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

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

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

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

== Таблица истины

Икс == Y Возвращает
Правда == Правда Правда
Правда == Ложь Ложь
Ложь == Правда Ложь
Ложь == Ложь Правда

И таблица истины

Икс а также Y Возвращает
Правда а также Правда Правда
Правда а также Ложь Ложь
Ложь а также Правда Ложь
Ложь а также Ложь Ложь

ИЛИ таблица истины

Икс или же Y Возвращает
Правда или же Правда Правда
Правда или же Ложь Правда
Ложь или же Правда Правда
Ложь или же Ложь Ложь

НЕ ИСТИННАЯ таблица

не Икс Возвращает
не Правда Ложь
не Ложь Правда

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

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

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

Условие оценивает вниз логическое значение ИСТИНА или ЛОЖЬ, представляя точку , где решение принято в программе. То есть, условие скажет нам, если что-то оценит True или False.

Положение является блоком кода , который следует за состоянием и диктует исход программы. То есть именно эта часть конструкции «Если xесть правда, тогда сделайте это».

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

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

else:
    print("Failing grade")

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

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

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

Заключение

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *