Как составить алгоритм високосного года

На чтение 3 мин Просмотров 13.4к. Опубликовано 01.04.2022

Содержание

  1. Введение
  2. Первый способ
  3. Проверка
  4. Второй способ
  5. Проверка
  6. Третий способ
  7. Проверка
  8. Заключение

Введение

Рассмотрим три способа проверки года на високосность с помощью python.

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

Первый способ

В данном варианте программы мы с Вами напишем программу с более подробным и понятным кодом.

Для начала создадим переменную year, в которую пользователь будет вводить проверяемый год:

year = int(input('Введите год: '))

Високосным годом является тот год, который нацело делится на 4, кроме столетий (исключением являются столетия делящиеся на 400).

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

if year % 4 != 0:
    print('Год не високосный.')

Теперь добавим elif, в котором проверим, делится ли год на 100 без остатка. Если да, то сработает условие, в котором проверяется делимость года на 400 без остатка, а если же нет, то сработает else. После elif тоже будет идти else, выводящее сообщение о високосности года.

Код:

elif year % 100 == 0:
    if year % 400 == 0:
        print('Год високосный.')
    else:
        print('Год не високосный.')
else:
    print('Год високосный.')

Проверка

И так, проверим работоспособность программы, введём в консоль 2020 год, которяый является високосным:

Ввод >> Введите год: 2020
Вывод >> Год високосный.

Теперь введём 2022 год, не являющийся високосным:

Ввод >> Введите год: 2022
Вывод >> Год не високосный.

Полный код программы:

year = int(input('Введите год: '))

if year % 4 != 0:
    print('Год не високосный.')

elif year % 100 == 0:
    if year % 400 == 0:
        print('Год високосный.')
    else:
        print('Год не високосный.')
else:
    print('Год високосный.')

Второй способ

Во втором способе мы значительно сократим код.

В коде будет производиться проверка на деление года нацело на 4, или 400, а так же на кратность 100:

year = int(input('Введите год: '))

if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print('Год високосный.')
else:
    print('Год не високосный.')

Проверка

Произведём те же проверки, что и в первом способе:

Ввод >> Введите год: 2020
Вывод >> Год високосный.
Ввод >> Введите год: 2022
Вывод >> Год не високосный.

Третий способ

В третьем способе воспользуемся модулем calendar. В модуле calendar есть функция isleap(), возвращающая True, если год високосный и False если нет.

Код:

import calendar
year = int(input('Введите год: '))

if calendar.isleap(year):
    print('Год високосный.')
else:
    print('Год не високосный.')

Проверка

Для разнообразия проверим 2024 год, являющийся високосным и 2025, не являющийся високосным.

Ввод >> Введите год: 2024
Вывод >> Год високосный.
Ввод >> Введите год: 2025
Вывод >> Год не високосный.

Заключение

В статье мы с Вами разобрали 3 способа проверки года на високосность с помощью python.

Спасибо всем, кто читал, удачи Вам 😉

Перейти к содержанию

Определить високосный год или нет

Просмотров 33.2к. Обновлено 29 октября 2021

Високосные года делятся нацело на 4. Однако из этого правила есть исключение: столетия, которые не делятся нацело на 400, високосными не являются.

В високосном годе 366 дней, в обычном 365.

  1. Если год не делится на 4, значит он обычный.
  2. Иначе надо проверить не делится ли год на 100.
  3. Если не делится, значит это не столетие и можно сделать вывод, что год високосный.
  4. Если делится на 100, значит это столетие и его следует проверить его делимость на 400.
  5. Если год делится на 400, то он високосный.
  6. Иначе год обычный.

Проверки можно проводить последовательно, а можно группировать через логические операторы «И» и «ИЛИ». Поэтому способов решения задачи может быть несколько.

Pascal

високосный год паскаль


// 1-й вариант:

var y: word;
begin
readln(y);
if y mod 4 <> 0 then writeln('Обычный')
else
if y mod 100 = 0 then
if y mod 400 = 0 then writeln('Високосный')
else writeln('Обычный')
else writeln('Високосный');
end.

// 2-й вариант:

var y: word;
begin
readln(y);
if (y mod 4 <> 0) or (y mod 100 = 0) and (y mod 400 <> 0) then
writeln('Обычный')
else
writeln('Високосный');
end.



1980
Високосный

1978
Обычный

Язык Си


// 1-й вариант:

#include

main() {
int y;
scanf("%d",&y);
if (y%4 != 0) printf("Обычный");
else
if (y%100 == 0 && y%400 != 0) printf("Обычный");
else printf("Високосный");
printf("n");
}

// 2-й вариант:

#include

main() {
int y;
scanf("%d",&y);
if (y%4 != 0 || y%100 == 0 && y%400 != 0) printf("Обычный");
else printf("Високосный");
printf("n");
}

Python

високосный год python(питон)


# 1-й вариант:

y = int(input())
if y % 4 != 0:
print("Обычный")
elif y % 100 == 0:
if y % 400 == 0:
print("Високосный")
else:
print("Обычный")
else:
print("Високосный")

# 2-й вариант:

if y % 4 != 0 or (y % 100 == 0 and y % 400 != 0):
print("Обычный")
else:
print("Високосный")

КуМир


| 1-й вариант:

алг високосный год
нач
цел n
ввод n
если mod(n,4) <> 0 то
вывод "Обычный год"
иначе
если mod(n,100) = 0 то
если mod(n,400) = 0 то
вывод "Високосный год"
иначе
вывод "Обычный год"
все
иначе
вывод "Високосный год"
все
все
кон

| 2-й вариант:

алг високосный год
нач
цел n
ввод n
если mod(n,4) <> 0 или mod(n,100) = 0 и mod(n,400) <> 0 то
вывод "Обычный год"
иначе
вывод "Високосный год"
все
кон



1100
Обычный год

1992
Високосный год

Basic-256


input y
if y%4 = 0 then
if y%100=0 and y%400 <> 0 then
print "365"
else
print "366"
endif
else
print "365"
endif

Return true if the input year is a leap year

Basic modern day code:

  If year mod 4 = 0, then leap year
  if year mod 100 then normal year
  if year mod 400 then leap year
  else normal year

Todays rule started 1582 AD
Julian calendar rule with every 4th year started 46BC but is not coherent before 10 AD as declared by Cesar.
They did however add some leap years every 3rd year now and then in the years before:
Leap years were therefore 45 BC, 42 BC, 39 BC, 36 BC, 33 BC, 30 BC, 27 BC, 24 BC, 21 BC, 18 BC, 15 BC, 12 BC, 9 BC, 8 AD, 12 AD
Before year 45BC leap year was not added.

The year 0 do not exist as it is …2BC 1BC 1AD 2AD… for some calculation this can be an issue.

function isLeapYear(year: Integer): Boolean;
begin
  result := false;
  if year > 1582 then // Todays calendar rule was started in year 1582 
    result := ((year mod 4 = 0) and (not(year mod 100 = 0))) or (year mod 400 = 0)
  else if year > 10 then // Between year 10 and year 1582 every 4th year was a leap year 
    result := year mod 4 = 0
  else //Between year -45 and year 10 only certain years was leap year, every 3rd year but the entire time
    case year of
      -45, -42, -39, -36, -33, -30, -27, -24, -21, -18, -15, -12, -9:
        result := true;
    end;
end;


Загрузить PDF


Загрузить PDF

В високосном году содержится один дополнительный день. В обычном году примерно 365,24 дней, поэтому каждые четыре года нужно добавлять один дополнительный день. Это необходимо, чтобы не отстать от года на несколько часов. Вычислить високосные годы довольно легко, но нужно запомнить несколько специальных правил. Если вы не любите делать расчеты, просто посмотрите в календарь.

  1. Изображение с названием Calculate Leap Years Step 1

    1

    Определите год, который хотите проверить на високосность. Например, рассмотрите прошлый, текущий или будущий год.[1]

    • Например, проверьте 1997 или 2012 (как прошлый год), или 2019 (как текущий год), или 2025, или 2028 (как будущий год).
  2. Изображение с названием Calculate Leap Years Step 2

    2

    Разделите год на 4. Если деление целочисленное, то есть без остатка, год високосный. Если при делении получился остаток (или десятичная дробь), год не високосный.[2]

    • Например, 1997/4 = 499,25. Получилась десятичная дробь, поэтому 1997 не является високосным годом.
    • 2012/4 = 503. Получилось целое число, поэтому 2012, скорее всего, високосный год.
  3. Изображение с названием Calculate Leap Years Step 3

    3

    Выясните, делится ли год на 100. Если год делится нацело на 4, но не делится нацело на 100, это високосный год. Если год делится как на 4, так и на 100, возможно, это не високосный год, поэтому придется выполнить еще одно вычисление.[3]

    • Например, 2012 делится на 4 и не делится на 100 (2012/100 = 20,12). Поэтому 2012 год определенно является високосным.
    • 2000 делится на 4 и на 100 (2000/4=500 и 2000/100=20). Это означает, что 2000 год может не быть високосным, поэтому выполните еще одно вычисление.
  4. Изображение с названием Calculate Leap Years Step 4

    4

    Проверьте, делится ли год на 400. Если год делится на 100 и не делится на 400, это не високосный год. Если год делится на 100 и на 400, это високосный год.[4]

    • Например, 1900 делится нацело на 100, но не делится на 400 (199/400=4,75). Это означает, что 1900 год не является високосным.
    • С другой стороны, 2000 делится нацело на 100 и на 400 (2000/400=5). Это означает, что 2000 год является високосным.

    Подсказка: если вы не хотите делить число вручную или не уверены в полученных результатах, воспользуйтесь онлайн-калькулятором високосных годов — он сделает все вычисления.[5]

    Реклама

  1. Изображение с названием Calculate Leap Years Step 5

    1

    Найдите год, который хотите проверить, в календаре.[6]
    Определитесь с проверяемым годом, а затем возьмите бумажный календарь или откройте онлайн-календарь, в котором можно посмотреть как предыдущие, так и будущие годы.[7]

    • Например, чтобы выяснить, был ли 2016 год високосным, найдите календарь того года.
    • Чтобы проверить, является ли 2021 год високосным, откройте онлайн-календарь этого года.
  2. Изображение с названием Calculate Leap Years Step 6

    2

    Откройте февраль и найдите в нем 29-е число. В високосных годах присутствует один дополнительный день, который включается в февраль, потому что это самый короткий месяц. Если в феврале есть 29 число, год високосный. [8]

    • Если февраль содержит только 28 дней, это не високосный год.
  3. Изображение с названием Calculate Leap Years Step 7

    3

    Високосный год бывает раз в 4 года. Обычный год длится 365 дней и около 6 часов. За четыре года эти 6 часов превращаются в дополнительный день (6х4=24), поэтому високосные годы бывают каждые 4 года. Прибавьте 4 к последнему високосному году, чтобы определить, какой следующий год будет високосным.[9]

    • Например, 2016 год был високосным, поэтому 2016+4 = 2020, то есть 2020 будет следующим високосным годом.

    Подсказка: помните, что иногда високосного года не бывает в течение 8 лет, поскольку обычный год длится 365 дней 5 часов 48 минут и 46 секунд (а не ровно 6 часов).[10]
    Поэтому лучше сделать расчеты, а не полагаться на то, что високосный год бывает каждые 4 года.

    Реклама

Об этой статье

Эту страницу просматривали 45 629 раз.

Была ли эта статья полезной?

Оглавление:

  • 1 Задача — Определить високосный год или нет
    — программирование на Pascal, Си, Кумир, Basic-256, Python

    • 1.1 Pascal
    • 1.2 Язык Си
    • 1.3 Python
    • 1.4 КуМир
    • 1.5 Basic-256

Задача — Определить високосный год или нет
— программирование на Pascal, Си, Кумир, Basic-256, Python

Определить, является ли год, который ввел пользователем, високосным или невисокосным.

Високосные года делятся нацело на 4. Однако из этого правила есть исключение: столетия, которые не делятся нацело на 400, високосными не являются.

В високосном годе 366 дней, в обычном 365.

  1. Если год не делится на 4, значит он обычный.
  2. Иначе надо проверить не делится ли год на 100.
  3. Если не делится, значит это не столетие и можно сделать вывод, что год високосный.
  4. Если делится на 100, значит это столетие и его следует проверить его делимость на 400.
  5. Если год делится на 400, то он високосный.
  6. Иначе год обычный.

Проверки можно проводить последовательно, а можно группировать через логические операторы «И» и «ИЛИ». Поэтому способов решения задачи может быть несколько.

Pascal

// 1-й вариант:

var y: word;
begin
readln(y);
if y mod 4 <> 0 then writeln(‘Обычный’)
else
if y mod 100 = 0 then
if y mod 400 = 0 then writeln(‘Високосный’)
else writeln(‘Обычный’)
else writeln(‘Високосный’);
end.

// 2-й вариант:

var y: word;
begin
readln(y);
if (y mod 4 <> 0) or (y mod 100 = 0) and (y mod 400 <> 0) then
writeln(‘Обычный’)
else
writeln(‘Високосный’);
end.

1980
Високосный

1978
Обычный

Язык Си

// 1-й вариант:

#include <stdio.h>

main() {
int y;
scanf(«%d»,&y);
if (y%4 != 0) printf(«Обычный»);
else
if (y%100 == 0 && y%400 != 0) printf(«Обычный»);
else printf(«Високосный»);
printf(«n»);
}

// 2-й вариант:

#include <stdio.h>

main() {
int y;
scanf(«%d»,&y);
if (y%4 != 0 || y%100 == 0 && y%400 != 0) printf(«Обычный»);
else printf(«Високосный»);
printf(«n»);
}

Python

# 1-й вариант:

y = int(input())
if y % 4 != 0:
print(«Обычный»)
elif y % 100 == 0:
if y % 400 == 0:
print(«Високосный»)
else:
print(«Обычный»)
else:
print(«Високосный»)

# 2-й вариант:

if y % 4 != 0 or (y % 100 == 0 and y % 400 != 0):
print(«Обычный»)
else:
print(«Високосный»)

КуМир

| 1-й вариант:

алг високосный год
нач
цел n
ввод n
если mod(n,4) <> 0 то
вывод «Обычный год»
иначе
если mod(n,100) = 0 то
если mod(n,400) = 0 то
вывод «Високосный год»
иначе
вывод «Обычный год»
все
иначе
вывод «Високосный год»
все
все
кон

| 2-й вариант:

алг високосный год
нач
цел n
ввод n
если mod(n,4) <> 0 или mod(n,100) = 0 и mod(n,400) <> 0 то
вывод «Обычный год»
иначе
вывод «Високосный год»
все
кон 1100
Обычный год

1992
Високосный год

Basic-256

input y
if y%4 = 0 then
if y%100=0 and y%400 <> 0 then
print «365»
else
print «366»
endif
else
print «365»
endif

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий