Python 3.x 闰日计算器代码错误,请指出我的错误所在

Python 3.x 闰日计算器代码错误,请指出我的错误所在,python-3.x,Python 3.x,我在练习Python时在日常编程子插件中发现了这个问题,这是我无法让代码正常工作的链接,请帮助我 def leaps(year_1, year_2): number_of_leaps = 0 if year_1 == year_2: return number_of_leaps if year_1 % 4 != 0: year_1 += 4 - (year_1 % 4) if

我在练习Python时在日常编程子插件中发现了这个问题,这是我无法让代码正常工作的链接,请帮助我

    def leaps(year_1, year_2):
        number_of_leaps = 0
        if year_1 == year_2:
            return number_of_leaps
        if year_1 % 4 != 0:
            year_1 += 4 - (year_1 % 4)
        if year_1 % 100 == 0:
            if year_1 % 900 == 200 or year_1 % 900 == 600:
                start_year = year_1
            else:
                start_year = year_1 + 4
        else:
            start_year = year_1
        if start_year >= year_2:
            return number_of_leaps
        else:
            for year in range(start_year, year_2, 4):
                if year % 100 == 0:
                    if year % 900 == 200 or year_1 % 900 == 600:
                        number_of_leaps += 1
                else:
                    number_of_leaps += 1
            return number_of_leaps


    print(leaps(1234, 5678))
    print(leaps(123456, 7891011))


实际输出应该分别是
1077
1881475
,但我似乎得到了
1072
1872844
请告诉我问题所在。

根据reddit链接,这是一个
修订版的朱利安日历,因此逻辑如下

def check_leap(year):
    #A leap year is divisible by 4 but not by 100
    if year % 4 == 0 and year % 100 != 0:
        return True
    # A leap year leaves 200 or 600 reminder when divided by 900
    if year % 900 == 200 or year % 900 == 600:
        return True
    #All other cases are non leap years
    return False

def leaps(year_1, year_2):
    number_of_leaps = 0
    #If year_1 is bigger than year_2, range is incorrect
    if year_1 > year_2:
        return number_of_leaps

    for year in range(year_1, year_2):
        if(check_leap(year)):
            number_of_leaps+=1

    return number_of_leaps

检查输出,我们得到

leaps(2016, 2017)
leaps(2019, 2020)
leaps(1900, 1901)
leaps(2000, 2001)
leaps(2800, 2801)
leaps(123456, 123456)
leaps(1234, 5678)
leaps(123456, 7891011)
1
0
0
1
0
0
1077
1881475

你希望年份包含或排除下限和上限吗?在我下面的回答中,我假设包含下限和上限我希望包含下限和上限那么我的回答应该适用于你!请检查下面,我知道,这个逻辑是在问题中提出的,所以我一直在使用它。我试试这个,谢谢。如果我的答案对你有帮助,请接受并投票:嗨,我看到你没有接受我的答案!你能告诉我我的答案中是否有问题吗?在前面提到的reddit帖子中,有一些不同的答案似乎与你或我的答案不匹配,因此我不能说这是最终答案,我仍然需要帮助…啊,这不是标准日历,而是经修订的Julian日历,而我以为是格里高利!你应该在问题@crastingrpg-man中提到这个重要信息!