Решение 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.
Входные данныеПравильный ответ
2012YES
2011NO
1492YES
1861NO
1600YES
1700NO
1800NO
1900NO
2000YES

Leave a Reply

Your email address will not be published. Required fields are marked *

*