Python 3.x 闰日计算器代码错误,请指出我的错误所在
我在练习Python时在日常编程子插件中发现了这个问题,这是我无法让代码正常工作的链接,请帮助我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
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中提到这个重要信息!