Как работает логика нахождения високосных лет? - PullRequest
0 голосов
/ 12 октября 2018

Программа была о поиске високосного года, но я не мог понять логику:

if(year%4==0 and not year%100==0 or year%4==0 and year%100==0 and year%400==0)

Пожалуйста, помогите мне понять логику (я знаю, как !, || и && операторы работают).

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Алгоритм определения того, является ли год високосным, состоит в следующем:

  • Каждый год, который делится на четыре, является високосным, за исключением лет, которые делятся на 100,но эти столетние годы являются високосными, если они в точности делятся на 400.

Например, 1700, 1800 и 1900 годы были не високосными, а были годами 1600 и 2000были.

0 голосов
/ 12 октября 2018

Этот фрагмент кода пытается понять, является ли указанный вами год високосным годом или нет.Год является високосным, если:

  • делится на 4, следовательно, year%4==0 , а не на 100, следовательно, year%4==0 and year%100==0 and year%100==0

ИЛИ если:

  • делится на 4 и на 100 и на 400, следовательно, year%400==0

Целое выражение будет более читабельным, если вы добавите пару скобок:

if( (year%4==0 and not year%100==0) or (year%4==0 and year%100==0 and year%400==0) )

note : все выражение может быть упрощено.Поскольку число, делимое на 400, также делится на 4 и 100, вы можете написать:

if( (year%4==0 and not year%100==0) or year%400==0 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...