Скобки python между or and

Логические выражения и операторы в 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-тренды, делятся полезными инструкциями и даже приглашают к себе работать.

Источник

Читайте также:  Php coding array to string
Оцените статью