Дело в том, что все сообщества в ВК по теме выглядят одним из следующих образов:
- Неактивное
- Открытое, с кучей спама
- Активное, но в котором одни репосты, то есть нет оригинального контента
>>> gk = len([y for y in range(2019) if (y % 400 == 0) or (y % 4 == 0) and (y % 100 != 0)]) >>> uk = len([y for y in range(2019) if (y % 4 == 0)]) >>> uk - gk 15
Отсюда следует распределение високосных годов:
год, номер которого кратен 400, — високосный;
остальные годы, номер которых кратен 100, — невисокосные;
остальные годы, номер которых кратен 4, — високосные.
Разница Период (по юлианскому календарю) Период (по григорианскому календарю)
10 5 октября 1582 — 29 февраля 1700 15 октября 1582 — 11 марта 1700
11 1 марта 1700 — 29 февраля 1800 12 марта 1700 — 12 марта 1800
12 1 марта 1800 — 29 февраля 1900 13 марта 1800 — 13 марта 1900
13 1 марта 1900 — 29 февраля 2100 14 марта 1900 — 14 марта 2100
14 1 марта 2100 — 29 февраля 2200 15 марта 2100 — 15 марта 2200
15 1 марта 2200 — 29 февраля 2300 16 марта 2200 — 16 марта 2300
RodegastИз этой таблицы видно что каждые сто лет набегает один день, следовательно за 2000 лет (20 столетий) должно было бы набежать двадцать дней, но это не так. Количество високосных лет за 2019 лет можно посчитать с помощью модуля calendar:
Из этой таблицы видно что сейчас разница между юлианским и григорианским календарём должно составлять 13 дней, а не 15.
>>> import calendar >>> sum(calendar.isleap(i) for i in range(2019)) 490
>>> len([y for y in range(2019) if (y % 400 == 0) or (y % 4 == 0) and (y % 100 != 0)]) 490
>>> len([y for y in range(2019) if (y % 4 == 0)]) 505
скачок, увеличивающий разницу между календарями на один день, происходит 1 марта завершающего столетие года, номер которого кратен 100 и не кратен 400.
ramiЯ не обратил внимания, что в таблице не все столетние года, а только не високосные, 1600 и 2000 как и должно быть отсутствуют. Таблица правильная.
Из этой таблицы видно что каждые сто лет набегает один день, следовательно за 2000 лет (20 столетий) должно было бы набежать двадцать дней, но это не так.
RodegastЯ не знаю какую задачу решал автор темы, у меня нет регистрации в ВК.
И ты допускаешь туже самую ошибку как и автор темы. У тебя должно получаться 13 дней, а не 15. Иначе твои вычисления не верны.
RodegastДо нашей эры високосные годы в Юлианском календаре реально были каждые три года, а не каждые четыре, потом отменили несколько високосных лет, нулевой и четвёртый не были високосными.
Не существует “теоретической” и “текущей” разности между датами.
Задача: напишите программу в 1 строчку, которая создаёт список всех високосных годов с 0 до 2018.Если условия задачи понимать буквально, то список високосных лет до 1582 года должен содержать високосные года по Юлианскому календарю, а после по Григорианскому. Фактически это все года которые делятся на 4, за исключением 0, 4, 1700, 1800, 1900 годов.
[year for year in range(8, 2018, 4) if year < 1582 or year % 100 or not year % 400]
[year for year in range(2019) if (year % 400 == 0) or (year % 4 == 0) and (year % 100 != 0)]