Когда мы хотим проверить, зарегистрирован ли пользователь на сайте, мы запрашиваем у него логин и пароль. Если логин существует в базе данных и введённый пароль совпадает с паролем в базе, то мы авторизуем пользователя. Иначе продолжаем запрашивать у пользователя логин и пароль. В примерах ниже мы сравним значения одного типа друг с другом на языке программирования Python.
Вот как реализовано сравнение двух строк в Python:
Пример с проверкой пароля:
Логическое сравнение или его результат используется в конструкциях if-else и циклах while.
Миграция в то самое облако
безопасно и с гарантией результата.
Предоставим грант до 1 000 000 ₽ на облачную
инфраструктуру и возьмем на себя весь процесс.
Логические выражения
Логическое выражение в самом простом смысле — это математическое сравнение. В Python вопрос «Что больше: 3 или 5?» будет записан в следующем виде: 3 > 5 и звучать как: «Три больше пяти. Правда? — Нет».
Или такой вариант: 4 != 0 (4 не равно 0. Правда?)
Как записываются операторы сравнения в Python:
- a == b - А равно Б
- a > b - А больше Б
- a >= b - А больше или равно Б
- a < b - А меньше Б
- a <= b - А меньше или равно Б
- a != b - А не равно Б
Результат такого сравнения можно сохранить в переменную, как и любое другое значение:
Можно сравнивать сразу несколько значений подряд:
В итоге в первом значении мы получили True, а во втором Python выдал False.
Сравнение строк
Помимо чисел, в Python можно сравнивать друг с другом строки, списки и другие типы данных.
Вот, например, как выглядит сравнение двух строк в Python:
Во втором случае результатом оказалась ложь, т.к. сравнение чувствительно к регистру символов.
Также строки можно проверять между собой на большинство/меньшинство.
- В первом случае всё просто — строки равны.
- Во втором происходит посимвольное сравнение строк. Первые два символа равны, сравниваются следующие.
b > aистинно, т.к. символbстоит в алфавите по порядку послеa. Поэтому всё выражение истинно. Чтобы проще было понять, можно вместо букв поставить их порядковые номера в алфавите:123 > 111 - Посимвольное сравнение не зависит от длины строк, поэтому в третьем случае выражение ложно:
a > x.
Такое сравнение называется лексикографическим: wikipedia.
Сравнение других типов значений
Сравнение списков аналогично сравнению строк. Например, когда условие в Python не равно. Каждый элемент списка по очереди сравнивается с другим.
Значения разных типов можно также сравнивать между собой:
Результат ложный, т.к. типы данных не равны (строка и число).
Проверка на большинство/меньшинство разных типов выдаст ошибку:
Преобразование значений в тип bool
Значения False или True можно получить непосредственно из самих значений, без операции сравнения. Например, строка 'a' будет True, а 0 — False. Для этого нужно вызвать функцию bool() и передать ей параметр, который мы хотим преобразовать:
А вот пустая строка или список будут равны False:
Логика простая — если размер списка или строки равен нулю, то переменная bool в Python будет равна False. 0 — это также False.
Все остальные значения, отличные от 0 или с длиной больше 0 будут True.
Как правило, булевые операции в Python нужны, когда проверяется наличие какой-либо информации в переменной, например, заполнил ли пользователь необходимые поля в форме регистрации или оставил их пустыми.
Упрощенная версия такой проверки:
Логические операторы
Если мы хотим проверить на истинность сразу несколько логических выражений или значений, то нам нужно использовать логические операторы.
Например ввел ли пользователь свое имя и больше ли 12 лет его возраст:
Мы использовали логический оператор and. Он возвращает истинное значение, только тогда, когда по обе стороны от него находятся истинные значения.
Есть еще or и not.
orвозвращает истинное значение, когда хотя бы с одной стороны от него находится истинное значение.notменяет значение на противоположное.
Все они работают с булевыми эквивалентами значений. Т.е. сначала преобразуют их в тип bool, а затем производят вычисления.
Логические операции можно комбинировать между собой в одном выражении:
Вычисления происходят по порядку. Чтобы изменить его, надо использовать скобки, как в математике.
Значение поменялось на истинное, т.к. сначала считается выражение внутри скобок (False), а затем происходит его инверсия. В Python есть одна особенность при использовании операторов and и or. Они не обязательно возвращают только True и False. Они возвращают непосредственно само значение, на котором остановились вычисления.
Посмотрим на примере:
- В первом случае вернулся
0, потому что расчеты остановились на переменнойage. Так как все операторы являютсяand, то если одно из значений ложно, то и всё выражение будет ложно, следовательно, дальше считать нет смысла. - Во втором случае обратная ситуация. Все операторы являются
or, поэтому вычисления останавливаются на первом истинном значении. Собственно, оно нам и вернулось — значение переменнойname1.
Другие виды логических операторов
Существуют также другие логические операции, которые используются реже и в специфических ситуациях.
Например, есть логические побитовые операции, которые применяются в шифровании данных.
Одна из таких — XOR: исключающее ИЛИ. В Python этой операции соответствует символ ^.
Пример шифрования числа. Вместо чисел могут быть любые бинарные данные.
Список всех побитовых операторов в Python:
| Операция | Значение |
| a & b | Побитовое И для a и b |
| a | b | Побитовое ИЛИ для a и b |
| a ^ b | Исключающее ИЛИ для a и b |
| ~a | Инверсия битов для a |
| a << b | Побитовый сдвиг влево для a на b |
| a >> b | Побитовый сдвиг вправо для a на b |
Однако не все логические операции присутствуют в Python. Например, в нем нет импликации.
Подготовили выгодные тарифы на облачные серверы
477 ₽/мес
657 ₽/мес
Заключение
Мы рассмотрели логические выражения и операторы в Python 3. Больше о работе с Python читайте в блоге Timeweb Cloud.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
