Python: Отрицание
Наряду с конъюнкцией (И) и дизъюнкцией (ИЛИ), часто используется операция «отрицание». Отрицание меняет логическое значение на противоположное.
В программировании ему соответствует унарный оператор not
.
not True # False
not False # True
Например, если есть функция, проверяющая чётность числа, то с помощью отрицания можно выполнить проверку нечётности:
def is_even(number):
return number % 2 == 0
print(is_even(10)) # => True
print(not is_even(10)) # => False
То есть мы просто добавили not
слева от вызова функции и получили обратное действие.
Отрицание — мощный инструмент, который позволяет лаконично выражать задуманные правила в коде без необходимости писать новые функции.
А что если написать так not not is_even(10)
? Удивительно, но код сработает:
print(not not is_even(10)) # => True
В логике двойное отрицание подобно отсутствию отрицания вообще:
not not True # True
not not False # False
print(not not is_even(10)) # => True
print(not not is_even(11)) # => False
Задание
Реализуйте функцию is_not_lannister_soldier()
, которая проверяет, что солдат — не Ланнистер. Функция принимает на вход такие же аргументы, как и функция is_lannister_soldier()
:
- Цвет доспехов (строка). Если доспехи красные, то строка
red
. None
если щита нет. Строкаlion
если щит есть, и на нём изображен лев.
Вам доступна уже готовая к использованию функция is_lannister_soldier
. Можете воспользоваться ей, чтобы не писать все логические условия заново.
Условия распознавания Ланнистера описаны в прошлом уроке.
Примеры вызова:
is_not_lannister_soldier('red', 'man') # True
is_not_lannister_soldier('blue', 'lion') # False
Советы
Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.