Отрицание

Наряду с конъюнкцией (И) и дизъюнкцией (ИЛИ), часто используется операция «отрицание». Отрицание меняет логическое значение на противоположное.

В программировании ему соответствует унарный оператор 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(is_even(10))      # => True
print(not is_even(10))  # => False

В логике двойное отрицание подобно отсутствию отрицания вообще:

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:

  1. Цвет доспехов (строка). Если доспехи красные, то строка red.
  2. None если щита нет. Строка lion если щит есть, и на нём изображен лев.

Вам доступна уже готовая к использованию функция is_lannister_soldier. Можете воспользоваться ей, чтобы не писать все логические условия заново.


Советы


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.