Следующий високосный год
Перепробовал разные варианты, не могу найти решение. Определить какой год это не сложно, но я не могу понять как вывести следующий год.
Задача: Создайте программу, которая запрашивает у пользователя год и сообщает вам, когда наступит следующий високосный год.
Должно быть вот так:
Year?: 2019
Year 2019 next leap year 2020
Year?: 2020
Year 2020 is leap year and next leap year 2024
Мой код:
i = int(input("Year?: "))
while i % 400==0 and i % 4 == 0 and i % 100!=0:
print("Year is a leap year", i, "next leap year", i + 4 )
else:
print("Year", i, "next leap year", i +1 )
Ответы (3 шт):
Автор решения: entithat
→ Ссылка
Проверяем высокосный ли это год. Если нет к текущему году прибавляем еще y % 4.
from calendar import isleap
def next_leap(y):
y += 4 - y % 4
return y if isleap(y) else y + 4
print(next_leap(2012)) # 2016
print(next_leap(2017)) # 2020
print(next_leap(2020)) # 2024
Автор решения: CrazyElf
→ Ссылка
Если я правильно понял задачу, то как-то так считаем "в лоб":
def is_leap_year(year):
"""Determine whether a year is a leap year."""
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
current_year = int(input("Year?: "))
next_leap_year = current_year + 1
while not is_leap_year(next_leap_year):
next_leap_year += 1
print(f'Year {current_year} {("","is leap year and ")[is_leap_year(current_year)]}next leap year {next_leap_year}')
- Выделяем определение високосного года в отдельную функцию
- Ищем следующий високосный год начиная с года, следующего за введённым
- Выводим информацию о том, високосный ли текущий год, и следующий високосный год
Автор решения: TigerTV.ru
→ Ссылка
Еще вариант:
from calendar import isleap
def next_leap(y):
res = y + 4 - y % 4
return res + 4 * (not isleap(res))
print(next_leap(1998)) # 2000
print(next_leap(2020)) # 2024
print(next_leap(2098)) # 2104