Логические значения в питоне

Логический тип данных (bool) в Python

Логический тип данных (bool) (или булевый тип) это примитивный тип данных, который принимает 2 значения — истина или ложь.

В Python имеется самостоятельный логический тип bool , с двумя предопределенными значениями:

True и False пишутся с большой буквы. Если написать с маленькой true , интерпретатор выдаст ошибку: NameError: name ‘true’ is not defined

True и False являются экземплярами класса bool который в свою очередь является подклассом int Поэтому True и False в Python ведут себя как числа 1 и 0. Отличие только в том, как они выводятся на экран.

>>> True True >>> type(True) >>> isinstance(True, int) True >>> True == 1 True >>> True + 4 # True это число 1 5 >>> 5 * False # False это число 0 0

Часто логический тип данных используется в ветвлениях if . Если результат выполнения True — выполняется соответствующая ветка.

Цикл while работает аналогичным образом — цикл выполняется до тех пор, пока логическое выражение True .

>>> count = 5 >>> while count: print(«count = <>«.format(count)) count -= 1 count = 5 count = 4 count = 3 count = 2 count = 1

Преобразования

Другие типы → bool

В Python для приведения других типов данных к булевому типу, используется функция bool() Работает эта функция по следующему соглашению:

  • непустая строка (в том числе если это один или несколько пробелов);
  • ненулевое число (в том числе меньшее единицы, например -5);
  • непустой список/кортеж (даже если он содержит один пустой элемент, например пустой кортеж);
  • функция.

👉 Функция bool() вернет False:

bool → str

Бывают ситуации, когда нам необходимо получить True и False в строковом представлении. Если выполнить код ниже, он вызовет ошибку:

print(«answer is » + True) TypeError: can only concatenate str (not «bool») to str

Ошибка произошла потому, что Python не выполняет неявное приведение типов (как например JavaScript), так как неявное приведение может маскировать логические ошибки.

Для вывода на экран булевого значения, необходимо привести его к строке:

>>> answer = True >>> print(«my answer is » + str(True)) my answer is True

или используйте форматирование строки:

print(«my answer is <>«.format(True))

bool → int

Встроенная функция int() преобразует логическое значение в 1 или 0.

Аналогичного результата можно добиться умножением логического типа на единицу:

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

Операторы — это своего рода функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).

В Python используется несколько типов операторов. Мы же рассмотрим только операторы сравнения и логические операторы , т.к. результатом их выполнения являются True или False .

>>> 1 == 5 False >>> 1 != 5 True >>> 1 > 5 False >>> 1 < 5 True >>> 1 >= 5 False >>> 1

>>> (1 + 1 == 2) or (2 * 2 == 5) True >>> (1 + 1 == 2) and (2 * 2 == 5) False >>> (1 + 1 == 2) and not (2 * 2 == 5) True

Источник

Логические выражения и операторы в Python 3

Сравнение значений Python и для чего это нужно

Когда мы хотим проверить, зарегистрирован ли пользователь на сайте, мы запрашиваем у него логин и пароль. Если логин существует в базе данных и введённый пароль совпадает с паролем в базе, то мы авторизуем пользователя. Иначе продолжаем запрашивать у пользователя логин и пароль.В примерах ниже мы сравним значения одного типа друг с другом на языке программирования Python.

Вот как реализовано сравнение двух строк в Python :

print(10 == 5) #False
print('abc' == 'abc') #True

Пример с проверкой пароля:

correct_password = 'qwerty'
asked_password = input('Введите пароль: ')

if (correct_password == asked_password):
print('Вы авторизованы')
else:
print('Пароль неверный')
Введите пароль: 123
Пароль неверный
Введите пароль: qwerty
Вы авторизованы

Логическое сравнение или его результат используется в конструкциях if-else и циклах while .

Логические выражения

Логическое выражение в самом простом смысле — это математическое сравнение. В Python вопрос » Что больше: 3 или 5? » будет записан в следующем виде: 3 > 5 и звучать как: “Три больше пяти. Правда? — Нет.”

print(3 > 5) #False

Или такой вариант: 4 != 0 ( 4 не равно 0. Правда?)

print(4 != 0) #True

Как записываются операторы сравнения в Python:

a = 5
b = 10

print
(a == b) #False
print(a > b) #False
print(a >= b) #False
print(a < b) #True
print(a print(a != b) #True

Результат такого сравнения можно сохранить в переменную, как и любое другое значение:

a = 5
b = 10

expr = a > b

print(expr) #False

Можно сравнивать сразу несколько значений подряд:

a = 4
expr = 0 a 10

print(expr) #True

a = 15
expr = 0 a 10

print(expr) #False

В итоге в первом значении мы получили True, а во втором Python выдал False.

Сравнение строк

Помимо чисел, в Python можно сравнивать друг с другом строки , списки и другие типы данных.

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

s1 = 'python'
s2 = 'python'
s3 = 'Python' # Поменяем одну букву на заглавную​

print(s1 == s2) #True
print(s1 == s3) #False

Во втором случае результатом оказалась ложь, т.к. сравнение чувствительно к регистру символов.

Также строки можно проверять между собой на большинство/меньшинство.

print('abc' > 'abc') #False
print('abc' > 'aaa') #True
print('abc' > 'x') #False
  • В первом случае всё просто — строки равны.
  • Во втором: происходит посимвольное сравнение строк. Первые два символа равны, сравниваются следующие.
    ‘b’ > ‘a’ истинно, т.к. символ ‘b’ стоит в алфавите по порядку после ‘a’ . Поэтому всё выражение истинно. Чтобы проще было понять, можно вместо букв поставить их порядковые номера в алфавите: 123 > 111
  • Посимвольное сравнение не зависит от длины строк, поэтому в третьем случае выражение ложно: ‘a’ > ‘x’
print('a' > 'x') #False

Такое сравнение называется лексикографическим: wikipedia.

Сравнение других типов значений

Сравнение списков аналогично сравнению строк. Например, когда условие в Python не равно. Каждый элемент списка по очереди сравнивается с другим.

print([1, 2, 3] > [1, 2, 3]) #False
print([1, 2, 3] > [1, 1, 1]) #True
print([1, 2, 3] > [25]) #False

Значения разных типов можно также сравнивать между собой:

expr1 = '1' == 1
expr2 = '' == 0

print(expr1) #False
print(expr2) #False

Результат ложный, т.к. типы данных не равны. (Строка и число).

Проверка на большинство/меньшинство разных типов выдаст ошибку:

print('a' > 1)
TypeError: '>' not supported between instances of 'str' and 'int'

print((1, 1, 1) [1, 2, 3])
TypeError: '

Преобразование значений в тип bool

Значения False или True можно получить непосредственно из самих значений, без операции сравнения. Например, строка ‘a’ будет True , а 0 — False . Для этого нужно вызвать функцию bool() и передать ей параметр, который мы хотим преобразовать:

var1 = bool('a')
var2 = bool(0)

print(var1) #True
print(var2) #False

А вот пустая строка или список будут равны False :

var1 = bool('')
var2 = bool([])

print(var1) #False
print(var2) #False

Логика простая — если размер списка или строки равен нулю, то переменная bool в Python будет равна False .

Все остальные значения, отличные от 0 или с длиной больше 0 будут True.

Как правило, булевые операции в Python нужны, когда проверяется наличие какой-либо информации в переменной, например, заполнил ли пользователь необходимые поля в форме регистрации или оставил их пустыми.

Упрощённая версия такой проверки:

user_name = input('Введите Ваше имя: ')

if user_name:
print(f'Добро пожаловать, !')
else:
print('Это обязательное поле')

Введите Ваше имя:
Это обязательное поле
Введите Ваше имя: Иван
Добро пожаловать, Иван!

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

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

Например ввел ли пользователь своё имя и больше ли 12 лет его возраст:

name = 'Иван'
age = 10

expr = name and age > 12

print(expr) #False

Мы использовали логический оператор and . Он возвращает истинное значение, только тогда, когда по обе стороны от него находятся истинные значения.

  • or — Возвращает истинное значение, когда хотя бы с одной стороны от него находится истинное значение.
  • not — Меняет значение на противоположное.

Все они работают с булевыми эквивалентами значений. Т.е. сначала преобразуют их в тип bool , а затем производят вычисления.

print(True and False) # False
print(True or False) # True
print(not True) # False
print(not False) # True

Логические операции можно комбинировать между собой в одном выражении:

expr = not True and False

print(expr) #False

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

expr = not (True and False)

print(expr) #True

Значение поменялось на истинное, т.к. сначала считается выражение внутри скобок ( False ), а затем происходит его инверсия. В Python есть одна особенность при использовании операторов and и or . Они не обязательно возвращают только True b False . Они возвращают непосредственно само значение, на котором остановились вычисления.

name1 = 'Иван'
age = 0
name2 = 'Василий'

print(name1 and age and name2) #0
print(name1 or age or name2) #Иван
  • В первом случае вернулся 0 , потому что расчёты остановились на переменной age . Так как все операторы являются and , то если одно из значений ложно, то и всё выражение будет ложно, следовательно, дальше считать нет смысла.
  • Во втором случае обратная ситуация. Все операторы являются or , поэтому вычисления останавливаются на первом истинном значении. Собственно, оно нам и вернулось — значение переменной name1.

Другие виды логических операторов

Существуют также другие логические операции, которые используются реже и в специфических ситуациях.

Например, есть логические побитовые операции , которые применяются в шифровании данных.

Одна из таких — XOR : исключающее ИЛИ. В Python этой операции соответствует символ ^ .

Пример шифрования числа. Вместо чисел могут быть любые бинарные данные.

phrase = 2022
key = 101

# Шифрование используя ключ
encrypt = phrase ^ key
print(encrypt)​

# Расшифровка сообщения используя ключ
decrypt = encrypt ^ key
print(decrypt)

1923
2022

Список всех побитовых операторов в Python:

Операция Значение
a & b Побитовое И для a и b
a | b Побитовое ИЛИ для a и b
a ^ b Исключающее ИЛИ для a и b
~a Инверсия битов для a
a Побитовый сдвиг влево для a на b
a >> b Побитовый сдвиг вправо для a на b

Однако не все логические операции присутствуют в питоне. Например, в питоне нет логической операции импликация .

Заключение

Мы рассмотрели логические выражения и операторы в Python 3. Больше о работе с python читайте в блоге cloud.timeweb.com .

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.

Источник

Читайте также:  How to run javascript code
Оцените статью