Python中的闰年程序

Python中的闰年程序,python,Python,我的代码很难排除故障。我所要做的就是让用户输入起始年和结束年,然后能够计算出两者之间的所有闰年。我对Python还是很陌生,只是不明白为什么我的while循环没有达到我想要的效果 starting = int(raw_input('Enter starting year: ')) ending = int(raw_input('Enter ending year: ')) print 'Leap years between', starting, 'and', ending while star

我的代码很难排除故障。我所要做的就是让用户输入起始年和结束年,然后能够计算出两者之间的所有闰年。我对Python还是很陌生,只是不明白为什么我的while循环没有达到我想要的效果

starting = int(raw_input('Enter starting year: '))
ending = int(raw_input('Enter ending year: '))
print 'Leap years between', starting, 'and', ending
while starting <= ending:
    if starting % 4 == 0 and starting % 100 != 0:
       print starting
    if starting % 100 == 0 and starting % 400 == 0:
       print starting
    starting = starting + 1
start=int(原始输入('输入起始年份:'))
ending=int(原始输入('输入结束年份:'))
打印“开始”和“结束”之间的闰年

启动时,代码工作正常。这是下一届会议:

Enter starting year: 2008
Enter ending year: 2032
Leap years between 2008 and 2032
2008
2012
2016
2020
2024
2028
2032
这完全符合e

控制台会话:

>>> from leapyear import leap
>>> leap()
Enter starting year: >? 2008
Enter ending year: >? 2032
Leap years between 2008 and 2032
2008
2012
2016
2020
2024
2028
2032
>>> from leapyear import new_leap
>>> new_leap(2008, 2032)
[2008, 2012, 2016, 2020, 2024, 2028, 2032]
leapyear.py 控制台会话:

>>> from leapyear import leap
>>> leap()
Enter starting year: >? 2008
Enter ending year: >? 2032
Leap years between 2008 and 2032
2008
2012
2016
2020
2024
2028
2032
>>> from leapyear import new_leap
>>> new_leap(2008, 2032)
[2008, 2012, 2016, 2020, 2024, 2028, 2032]
我认为这将包含所有的测试用例 我们在value=c中添加了所有无效案例 刚刚匹配并删除了b的值

def is_leap(year):
    leap = False
    leap1=True
    b=[]
    for a in range(1800,year+200,4):
        b.append(a)
    c=[1800,1900,2100,2200,2300,2500,2600,2700,2800,2900]
    for d in range(len(c)):
        e=c[d]
        if e in b:
            b.remove(e)
    if year in b:
        return leap1
    else:
        return leap
year = int(input())
print(is_leap(year))

那么代码做错了什么?乍一看,这段代码似乎运行良好。目前,在打印“闰年间隔”后,它刚刚完全停止。没有我的while循环,这条线工作得很好,但是有了我的while循环,它就停在那个点上了。编辑:我已经包括了一个屏幕截图来显示我的代码正在做什么。这里似乎很好,很有趣。尝试执行
print'Leap years interference{}and{}。format(start,end)
您可能没有保存代码。列表理解中的逻辑不正确:例如,它将1900作为闰年。@FMc我深表歉意。我现在已经修好了。请你看一下好吗?
def is_leap(year):
    leap = False

    if year%4 ==0 :
        leap = True

    elif year%100 ==0:
        leap = False

    elif year%400 ==0:
        leap = True

    return leap


year = int(raw_input())
print is_leap(year)