Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

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

35458
7 минут чтения
Средний рейтинг статьи: 3.4

Когда мы хотим проверить, зарегистрирован ли пользователь на сайте, мы запрашиваем у него логин и пароль. Если логин существует в базе данных и введённый пароль совпадает с паролем в базе, то мы авторизуем пользователя. Иначе продолжаем запрашивать у пользователя логин и пароль. В примерах ниже мы сравним значения одного типа друг с другом на языке программирования 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. Например, в нем нет импликации.

Подготовили выгодные тарифы на облачные серверы

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Заключение

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

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

35458
7 минут чтения
Средний рейтинг статьи: 3.4

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server