Ряд операций представляют условные выражения. Все эти операции принимают два операнда и возвращают логическое значение, которое в Python представляет тип bool. Существует только два логических значения - True (выражение истинно) и False (выражение ложно).
Операции сравнения
Простейшие условные выражения представляют операции сравнения, которые сравнивают два значения. Python поддерживает следующие операции сравнения:
- ==Возвращает True, если оба операнда равны. Иначе возвращает False.
- !=Возвращает True, если оба операнда НЕ равны. Иначе возвращает False.
- > (больше чем)Возвращает True, если первый операнд больше второго.
- < (меньше чем)Возвращает True, если первый операнд меньше второго.
- >= (больше или равно)Возвращает True, если первый операнд больше или равен второму.
- <= (меньше или равно)Возвращает True, если первый операнд меньше или равен второму.
Примеры операций сравнения:
a = 5
b = 6
result = 5 == 6 # сохраняем результат операции в переменную
print(result) # False - 5 не равно 6
print(a != b) # True
print(a > b) # False - 5 меньше 6
print(a < b) # True
bool1 = True
bool2 = False
print(bool1 == bool2) # False - bool1 не равно bool2
Операции сравнения могут сравнивать различные объекты - строки, числа, логические значения, однако оба операнда операции должны представлять один и тот же тип.
Логические операции
Для создания составных условных выражений применяются логические операции. В Python имеются следующие логические операторы:
- and (логическое умножение)Возвращает True, если оба выражения равны True1234age = 22weight = 58result = age > 21 and weight == 58print(result) # TrueВ данном случае оператор and сравнивает результаты двух выражений: age > 21 weight == 58. И если оба этих выражений возвращают True, то оператор and также возвращает True. Причем в качестве одно из выражений необязательно выступает операция сравнения: это может быть другая логическая операция или просто переменная типа boolean, которая хранит True или False.12345age = 22weight = 58isMarried = Falseresult = age > 21 and weight == 58 and isMarriedprint(result) # False, так как isMarried = False
- or (логическое сложение)Возвращает True, если хотя бы одно из выражений равно True1234age = 22isMarried = Falseresult = age > 21 or isMarriedprint(result) # True, так как выражение age > 21 равно True
- not (логическое отрицание)Возвращает True, если выражение равно False1234age = 22isMarried = Falseprint(not age > 21) # Falseprint(not isMarried) # True
Если один из операндов оператора and возвращает False, то другой операнд уже не оценивается, так как оператор в любом случае возвратит False. Подобное поведение позволяет немного увеличить производительность, так как не приходится тратить ресурсы на оценку второго операнда.
Аналогично если один из операндов оператора or возвращает True, то второй операнд не оценивается, так как оператор в любом случае возвратит True.
Оператор in
Оператор in возвращает True если в некотором наборе значений есть определенное значение. Он имеет следующую форму:
значение in набор_значений
Например, строка представляет набор символов. И с помощью оператора in мы можем проверить, есть ли в ней какая-нибудь подстрока:
message = "hello world!"
hello = "hello"
print(hello in message) # True - подстрока hello есть в строке "hello world!"
gold = "gold"
print(gold in message) # False - подстроки "gold" нет в строке "hello world!"
Если нам надо наоборот проверить, нет ли в наборе значений какого-либо значения, то мы може использовать модификацию оператора - not in. Она возвращает True, если в наборе значений НЕТ определенного значения:
message = "hello world!"
hello = "hello"
print(hello not in message) # False
gold = "gold"
print(gold not in message) # True