我想创建一个python程序与用户定义的函数,它应该读取一个由用户输入的年份,并通过检查输入的年份是否是闰年返回真/假。
这是我试过的
def is_leap(year):
leap = False
if(year%4==0):
if(year%100!=0):
if(year%400==0):
leap= True
else:
leap= False
else:
leap= False
else:
leap= False
return leap
year = int(input())
print(is_leap(year))
而且我没有得到所需的输出。
我用以下两个输入尝试了这段代码
2024
输出为
False
还有
2023
输出为
False
我错过了什么?
3条答案
按热度按时间iih3973s1#
首先处理异常会产生更清晰的代码。
xxhby3vn2#
让我们来看看你的2024年代码:
year%4==0
为True,因此我们进入if块year%100!=0
也为True,因此我们再次进入if块。现在你检查
year%400==0
。嗯,为什么?2024不是一个世纪,所以它永远不可能是400的倍数。所以你的逻辑在这里被打破了。2024可以被4整除,但不能被100整除。现在我们可以简单地返回True!在下一个案例中,我们需要检查是否可被400整除(其中
year%100!=0
为False)。如果我们把这些都取出来,我们会得到这个代码:
(note我如何去掉完全不必要的变量。)
izj3ouym3#
通过嵌套if/else,您可以充当AND,而需要OR。
最好的方法是重构代码:
相当于:
测试项目: