1980 год високосный или нет. Високосные года - список

Надеюсь, вы отлично встретили новый год, и сейчас у вас отличное праздничное настроение. По крайней мере у меня это именно так - мы не пили никакого алкоголя, и чокнулись в полночь бокалами с водой из пятилитровой канистры, поэтому мы проснулись, погуляли, и тут я вспомнил одно из вчерашних поздравлений с Новым годом:

Желаю, чтобы в конце каждого года ты, вспоминая то, что было за последние 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365 дней, думал про себя:

Ох, нифига себе, какой был экшен. Обязательно буду рассказывать внукам или напишу об этом потом книгу.


Итак, выше достаточно простой inline-способ определить количество дней в году (переменная year), который, по сути, полностью раскрывает их суть: в григорианском календаре високосными годами считаются те годы, порядковый номер которых либо кратен 4, но при этом не кратен 100, либо кратен 400. Иными словами, если год делится на 4 без остатка, но делится на 100 только с остатком, то он високосный, иначе - невисокосный, кроме случая, если он делится без остатка на 400 - тогда он всё равно високосный.

Например, 2013 год невисокосный, 1700, 1800 и 1900 - опять же невисокосные годы, а вот 2000, 2004, 2008 и 2012 - високосные.

Но что, если мы не помним, сколько дней в високосных (366 дней) и невисокосных (365 дней) годах, или просто хотим написать определение количества дней в году максимально быстро? Можно ли сделать так на Python? Конечно же, можно.

Итак, в Python есть модуль calendar . Он как раз отлично подходит для того, чтобы узнать, является ли тот или иной год високосным (или, например, сколько високосных годов в определённом интервале), определить количество дней в месяце, получить номер дня недели для определённой даты и так далее.

В частности, мы можем получить количество дней в каждом месяце года, и просто сложить.

Функция calendar.monthrange принимает номер года в качестве первого аргумента и номер месяца в качестве второго аргумента. Возвращает номер дня недели первого числа данного месяца и количество дней в данном месяце:

>>> import calendar >>> calendar.monthrange(2013, 1) (1, 31)
Соответственно, мы можем подсчитать общее количество дней для всех 12 месяцев, и получить таким образом количество дней для данного года:

>>> import calendar >>> year = 2013 >>> sum(map(lambda x: calendar.monthrange(year, x), range(1, 13))) 365
Но если подумать о том, как именно выполняется эта строка, становится очевидно, что это решение очень неэффективно, если нужно посчитать количество дней для большого количества годов.

Проверяем с помощью модуля timeit .

На то, чтобы выполнить её 1 миллион раз, требуется 13.69 секунд, если import calendar делается один раз в начале. Если import calendar делается каждый раз, тогда 14.49 секунд.

Теперь попробуем другой вариант. Он требует знания того, сколько дней в високосных и невисокосных годах, но зато он очень короткий:

>>> import calendar >>> year = 2013 >>> 365+calendar.isleap(year) 365
И, как легко догадаться, он уже намного быстрее: 0.83 секунд, включая import calendar, и 0.26 секунд, если import calendar делается один раз в начале.

Давайте также посмотрим, сколько требуется времени самому первому варианту, с «ручным» подходом: 0.07 секунд для 2012 и 2013 и 0.12 секунд для 2000 (думаю, всем понятно, откуда берётся такая разница в скорости для этих годов).

Получается, что это и есть самый быстрый вариант из этих трёх:

>>> import calendar >>> year = 2013 >>> 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365 365
Конечно, в большинстве случаев вы можете использовать любой из этих вариантов - в конце концов, при определении количества дней в одном, двух, десяти или ста годах вы вряд ли почувствуете какую-либо разницу.

Пишите, оптимизируйте, улучшайте, тестируйте и считайте производительность - но не забывайте о читаемости исходников ваших программ.

С Новым годом! Удачи, счастья, радости и самосовершенствования в новом году.

Все мы знаем о том, что обычный год состоит из 365 дней, однако существует и високосный год, в который включено 366 дней. Он случается раз в четыре календарных года, и месяц февраль в таком году включает в себя на один день больше. Но почему такой год называется високосным, задумываются немногие, и сегодня мы расскажем вам о происхождении данного названия.

Происхождение названия «Високосный» год

Как и в случае со многими другими известными сегодня наименованиями, происхождение «Високосного» года берет свое начало на латыни. Такой год издавна называется «Bis Sextus». Перевод с латыни данного названия означает «Второй шестой».

Стоит отметить, что введено такое исчисление времени было римлянами, и в римском календаре до нашей эры дни считались не в таком представлении, в котором это происходит сегодня. Римляне привыкли исчислять дни в виде количества суток, оставшихся до наступления следующего месяца. Римляне вставляли дополнительный день между 23 и 24 февраля. Само же 24 февраля называлось «сектус», что означало «шестой день до начала марта». В високосный год, когда между 23 и 24 февраля вставлялся дополнительный день, 24 февраля наступало дважды, что называлось «бис сектус», как мы уже отмечали – «Второй шестой» день.

Несложно понять, что «Бис сектус» в славянском понимании можно легко преобразовать в «високосный», ведь данные названия созвучны. Однако в современном григорианском календаре дополнительный день, как известно, вставляется не между 23 и 24 февраля, а после 28 февраля. Так, раз в четыре года, мы имеем возможность наблюдать на настенных календарях, календарях в наших компьютерах и смартфонах, день 29-го февраля.

Зачем нужен високосный год

Разобравшись с тем, почему високосный год так называется, необходимо также провести небольшой экскурс и о том, почему вообще существует такой год, зачем он был введен.

Все мы знаем о том, что обычный год состоит из 365 дней, мы к этому привыкли, и ни на секунду не сомневаемся в данном утверждении. Однако в действительности оно является не совсем верным, поскольку каждый год равен 365,4 дням, то есть 365 дням и 6 часам. Разумеется, такое исчисление времени является весьма неудобным, и оно непременно приводит к определенным смещениям в восприятии потока времени людьми. Именно поэтому учеными астрономами и было принято решение исчислять каждый кратный четырем год в объеме 366 дней (используя 4 отрывка по 6 часов от других годов), а все остальные – по 365 дней ровно.


Началась охота на салемских ведьм.

1708 год
Петр издает указ о закладке Бийской крепости

1784 год
Родился Лео фон Кленце - основатель архитектурных течений по принципу ""новое - немного перестроенное античное"". А маркиз де Сад переведен в Бастилию, где за пять лет напишет три своих наиболее известных и эпатажных романа.

1792 год
Родился Джоаккино Россини.

1812 год
Наполеон назначает командиров в своей армии. Александр I рассматривает проект газового освещения в столице своей империи.

1816 год
Великая княжна выходит замуж - разумеется, за принца. Российский император заботится о вдовах и законодательстве страны.

1828 год
Состоялась премьера оперы Обера «Немая из Портичи» (или «Фенелла»).

1832 год
Чарльз Дарвин изучает бразильские джунгли во время экспедиции корабля Бигль.

1856 год
Закончена Крымская война.

1860 год
Родился Герман Холерит.

1880 год
Достроен Сент-Готтардский тоннель.

1888 год
Российская империя полна культурными событиями. Спектакли разыгрываются, писатели строчат письма. В Европе Энгельс пишет нечто малоинтересное Либкнехту. В Америке очередной виток судебного дела, затянувшегося в итоге на четверть века и приведшего к изменению правил судебного доказательства.

1892 год
Создана международная комиссия, призванная урегулировать промысел морских котиков. Это был один из первых примеров международного сотрудничества в деле охраны животных.

1896 год
По всему миру именно в этот год и день родились талантливые организаторы и творческие личности.

1900 год
По григорианскому календарю 1900 - невисокосный год, по юлианскому - високосный.

1904 год
Русско-японская война - одна из первых в 20 веке. А в Европе танцуют и поют.

1908 год
В Лейденской лаборатории получен жидкий гелий. В России создан орловский централ. В Бразилии играют в футбол.

1912 год
Иосиф Сталин бежит из ссылки. Россия помогает в заключении сербско-болгарского договора. Бастуют рабочие в Бодайбо.

1916 год
Стачки, погромы, потопленные корабли, приказы и все, что сопутствует мировой войне. В Москве поэты самоизбираются в Председатели земного шара.

1920 год
Красная Армия теснит атаманов Деникина, Анненкова. В Чехии утверждена первая конституция. В Германии начался капповский путч.

1924 год
После гражданской войны оживает культура. Запрещаются суррогатные деньги. Рождается Владимир Крюков - председатель КГБ и участник ГКЧП.

1928 год
ЦИК и СНК всех уровней плодят документы. Писатели пишут письма. Артистки выступают. Корабли строятся. Знаменитости рождаются.

1932 год
В Финляндии вооруженный мятеж фашистов. Последний император Китая все еще пытается возглавить государство.

1936 год
Нильс Бор предложил планетарную модель строения атома.

1940 год
Гитлер морочит голову американскому дипломату. Чернокожая Хетти Макданиэл получает Оскара.

1944 год
Советские войска успешно наступают по всем направлениям.

1948 год
Президент Перу критикует оппонентов. Родилась Ирина Купченко.

1952 год
СССР шлет ноты Америке из-за катынского дела. Сталину направляют письмо о Паулюсе. Академия Художеств думает о талантливых детях. Заканчиваются и начинаются испытания самолетов. В деревне Мохча рождается Раиса Сметанина.

1956 год
Самолеты летают. Несправедливо обвиненные и растреллянные генералы реабилитированы. Создана Исламская республика Пакистан. В Финляндии ушел в отставку Президент. В Корее выходят статьи, полностью поддерживающие мнение лидера страны.

1960 год
Крупнейшее землетрясение в Марокко. Полеты крылатых ракет и новых самолетов. Премьеры фильмов. Родились писатели и по меньшей мере один серийный убийца.

1964 год
Спуск на воду советской атомной подводной лодки. Сообщение американцев о существовании нового стратегического самолета-истребителя. Подписан Пакт об арабском культурном единстве.

1968 год
Спущены на воду корабли и подлодки. Самолет Ил-18Д потерпел крушение.

1972 год
В Москве поет В.Высоцкий. В США Джон Леннон начинает борьбу за получение американской визы.

sharky:
25.03.2013 в 16:04

а с какого перепугу 1900 не является високосным? Високосный год наступает каждые 4 года, т.е. если на 4 делится - это високосный год. И больше не надо никаких делений на 100 или 400.

Вопросы задавать это нормально, а вот прежде чем утверждать что-то изучите матчасть. Земля делает оборот вокруг солнца за 365 суток 5 часов 48 минут 46 секунд. Как видите остаток не ровно 6 часов, а на 11 минут 14 секунд меньше. Это значит, что делая високосный год мы прибавляем лишнее время. Где-то за 128 лет накапливаются лишние сутки. Поэтому каждые 128 лет в одном из 4-х летних циклов високосный год делать не надо, чтобы избавиться от этих лишних суток. Но чтобы упростить, високосным не делают каждый 100-й год. Идея понятна? Хорошо. А как же тогда быть дальше, ведь лишний день прибавляется каждые 128 лет, а урезаем его каждые 100 лет? Да, мы отрезаем больше положенного, и это нужно когда-то вернуть.

Если первый абзац понятен и все еще интересно, тогда читаем дальше, но будет сложнее.

Итак за 100 лет набегает 100/128=25/32 суток лишнего времени (это 18 часов 45 минут). Мы не делаем високосный год, то есть отнимаем одни сутки: получаем 25/32-32/32=-7/32 суток (это 5 часов 15 минут), то есть отнимаем лишнее. Через четыре цикла по 100 лет (через 400 лет) мы отнимем лишнего 4*(-7/32)=-28/32 суток (это минус 21 час). На 400-й год мы делаем високосный год, то есть прибавляем сутки (24 часа): -28/32+32/32=4/32=1/8 (это 3 часа).
Мы делаем каждый 4 год високосным, но при этом каждый 100 год не високосным и при этом каждый 400 год високосным, но все равно каждые 400 лет прибавляются лишние 3 часа. Через 8 циклов по 400 лет, то есть через 3200 лет накопится лишних 24 часа, то есть одни сутки. Тогда добавляется еще одно обязательное условие: каждые 3200-й год не должен быть високосным. 3200 лет можно округлить до 4000, но тогда опять придется играться с добавленными или урезанными сутками.
3200 лет не прошло, так что об этом условии, если его таким сделают, еще не говорят. А вот 400 со дня утверждения Григорианского календаря лет уже прошло.
Года кратные 400 всегда високосные (пока что на сегодняшний день), остальные года кратные 100 не високосные, остальные года кратные 4 високосные.

Приведенный мною расчет показывает что при нынешнем состоянии ошибка в одни сутки накопиться за 3200 лет, но вот что об этом пишет википедия:
«Ошибка в одни сутки по сравнению с годом равноденствий в григорианском календаре накопится примерно за 10 000 лет (в юлианском - примерно за 128 лет). Часто встречающаяся оценка, приводящая к величине порядка 3000 лет, получается, если не учитывать, что со временем изменяется количество суток в тропическом году и, кроме того, изменяется соотношение между продолжительностями времён года». Из той же википедии формула продолжительности года в сутках с дробями неплохо обрисовывает картину:

365,2425=365+0,25-0,01+0,0025=265+1/4-1/100+1/400

Год 1900 високосным не был, а 2000 был, причем особенный, потому что такой високосный бывает раз в 400 лет.