Начнем с известных всем операторов. Проверим,
8 < 9 # правда
True
9 > 10 # неправда
False
Результат такой проверки имеет логический тип (boolean).
res = 8 < 9
res
True
Как мы уже обсуждали, переменные такого типа могут принимать два значения True
или False
. Обратите внимание, что True
и False
не заключены в кавычки – добавив кавычки, мы получим строки "True" и "False" (тип string).
"True" == True
False
При проверке равенства двух частей (переменных, списков и так далее) используется двойной знак равенства.
6 == 6
True
Одинарный знак «равно» используется для присваивания значений. Так ничего не сравним, но сохраним в переменную a
число 6:
a = 6
a
6
А так уже проверим условия:
print(a == 6)
print(a == 9)
True False
Отрицание равенства в Python обозначается с помощью оператора !=
(вообще !
в программировании используется для отрицания).
6 != 7
True
Стоит отметить, что Python достаточно лояльно относится к разделению между типам данных. Например, если мы сравним целое число и то же число, но с плавающей точкой (с дробной частью равной 0), Python сообщит, что эти числа совпадают.
6 == 6.0 # верно
True
Пусть у нас есть три целочисленные переменные a
, b
и c
, и мы планируем составлять сложные, составные уcловия, касающиеся этих переменных.
a = 3
b = 7
c = 1
Помогут операторы and
и or
. Оператор and
соответствует одновременному выполнению условий, оператор or
соответствует ситуации, когда хотя бы одно из условий выполняется. Оператор or
в Python – обычное «или», не исключающее: либо верно первое условие, либо второе, либо оба.
(a < b) and (b > c) # оба верны
True
(a < b) and (c > b) # второе неверно -> все неверно
False
Вместо and
можно использовать оператор &
, он нам потом ещё пригодится при работе с датафреймами pandas
:
(a < b) & (c > b)
False
(a < b) or (a > c) # первое верное -> хотя бы одно верно
True
Вместо or
можно использовать оператор |
:
(a < b) | (a > c)
True
Кроме and
и or
в Python есть еще полезные операторы: оператор принадлежности in
и оператор отрицания not
.
Пусть у нас есть списки отличных, хороших, удовлетворительных и плохих оценок.
excel = [8, 9, 10]
good = [6, 7]
sat = [4, 5]
bad = [1, 2, 3]
Проверим, лежит ли оценка 8 в плохих:
8 in bad
False
Применим отрицание:
8 not in bad # верно!
True
Тут главное не увлечься и не начать писать грамматические фразы вида 8 is not in bad
:) Хотя оператор is
в Python есть и его часто используют, если нужно сравнить какое-то значение с None
или проверить тип объекта:
8 is None # нет
None is None # да
True
# тип integer или нет
a = 3
type(a) is int
True
# главное, кавычки не ставить вокруг типа
type(a) is 'int'
False
А вот это уже too much, хотя красиво и как в естественном языке:
8 is not in bad
File "<ipython-input-22-e2bcc5ac93df>", line 1 8 is not in bad ^ SyntaxError: invalid syntax