Следующий високосный год

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

Задача: Создайте программу, которая запрашивает у пользователя год и сообщает вам, когда наступит следующий високосный год.

Должно быть вот так:

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
→ Ссылка