Python: Логические операторы 2
Логические операторы — важная тема, поэтому стоит закрепить её дополнительным примером и упражнением.
Попробуем реализовать функцию, проверяющую год на високосность. Год будет високосным, если он кратен 400 или он одновременно кратен 4 и НЕ кратен 100. Как видите, в определении уже заложена вся необходимая логика, осталось только переложить её на код:
def is_leap_year(year):
return year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)
print(is_leap_year(2018)) # => False
print(is_leap_year(2017)) # => False
print(is_leap_year(2016)) # => True
Разберём по частям:
- первое условие
year % 400 == 0
: остаток от деления на 400 равен 0, значит, число кратно 400 or
ИЛИ- второе условие
(year % 4 == 0 and year % 100 != 0)
year % 4 == 0
: остаток от деления на 4 равен 0, значит, число кратно 4and
Иyear % 100 != 0
: остаток от деления на 100 не равен 0, значит, число не кратно 100
Задание
Напишите функцию is_neutral_soldier()
, которая принимает на вход два аргумента:
- Цвет доспехов (строка). Возможные варианты:
red
,yellow
,black
. - Цвет щита (строка). Возможные варианты:
red
,yellow
,black
.
Функция возвращает True
если цвет доспехов не красный и цвет щита чёрный. В остальных случаях возвращает False
.
Примеры вызова:
print(is_neutral_soldier('yellow', 'black')) # => True
print(is_neutral_soldier('red', 'black')) # => False
print(is_neutral_soldier('red', 'red')) # => False
Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе