Решение Python Задача «Високосный год»
Условие
Дано натуральное число. Требуется определить, является ли год с данным номером високосным. Если год является високосным, то выведите YES, иначе выведите NO. Напомним, что в соответствии с григорианским календарем, год является високосным, если его номер кратен 4, но не кратен 100, а также если он кратен 400.
В условиях задачи не сказано об использовании каскадных if, поэтому решение будет с помощью логических операторов and и or.
year = int(input())
if year % 4 == 0 and year % 100 != 0 or year % 100 == 0 and year % 400 == 0:
print("YES")
else:
print("NO")
По условию, високосный год будет при условиях что год делится на 4 без остатка и не делится на 100, либо делится на 100 и на 400 без остатка.
Что происходит в коде. Сначала проверяем что год делится на 4 и не делится на 100, если это соблюдается, то первая часть оператора OR является правильной и дальше код не выполняется, условие IF выполнилось и будет напечатано YES.
Если первая часть year % 4 == 0 and year % 100 != 0 не будет выполнять условия, то будет проверяться вторая часть year % 100 == 0 and year % 400 == 0 и если оно верно, то условие IF также будет верно и print выведет YES.
Ну и если ни одна часть не будет выполнена, то выполнится блок else и выведется NO.
Код можно упростить и убрать проверку на деление на 100(так как если число делится на 400, то оно будет делиться и на 100) в правой части or и оставить только year % 400 == 0. Условия слева и справа or можно заключить в скобки, для лучшей читаемости.
year = int(input())
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print("YES")
else:
print("NO")
and – условие будет верным, только если левая и правая часть удовлетворяют условию.
#пример
a = 5
b = 5
if a == 5 and b == 5:
print("True")
#в данном случае левая и правая часть выполняют условие.
or – будет истинно, если левая или правая часть выполняют условие. Если левая часть удовлетворяет условию, то правая часть НЕ БУДЕТ ВЫПОЛНЕНА!
#пример
a = 0
b = 5
if a == 0 or b == 5:
print("True")
#в данном случае левая часть выполняют условие и правая часть не будет выполняться b == 5.
| Входные данные | Правильный ответ |
| 2012 | YES |
| 2011 | NO |
| 1492 | YES |
| 1861 | NO |
| 1600 | YES |
| 1700 | NO |
| 1800 | NO |
| 1900 | NO |
| 2000 | YES |
Leave a Reply