条件语句:IF条件有层次吗?



我正在学习python,并试图解决一个小测验。

在公历中,有三个条件用于识别闰年:

年可以被4整除,为闰年,除非:年可以被100整除,不是闰年,除非:年也能被400整除。那就是闰年了。这意味着在公历中,2000年和2400年是闰年,而1800年、1900年、2100年、2200年、2300年和2500年不是闰年。源

给定一年,判断它是否是闰年。如果是闰年,则返回布尔值True,否则返回False。

这是我的答案,但不知何故,我无法得到2100年的输出返回false

def is_leap(year):
leap = False

if year % 4 == 0:
return True
if year % 100 == 0:
return True
if year % 400 == 0:
return leap

#return leap
year = int(input())
print(is_leap(year))

完美的答案是:

def is_leap(year):
leap = False

if year % 400 == 0:
return True
if year % 100 == 0:
return leap
if year % 4 == 0:
return True

return leap

year = int(input())
print(is_leap(year))

问题:有人能解释一下为什么IF语句要这样安排吗?两个答案的区别是什么?我只是想知道为什么?

非常感谢你的帮助。

我试着分析问题,确保条件得到满足,但不知怎么的,我不明白如何正确使用条件语句。我想知道我是否错过了什么。

Return关闭函数。所以当你输入2100时,它应该是假的,因为它可以被100整除而不能被400整除。但是函数是从上到下运行的。所以当它运行这一行时:

if year % 4 == 0:

显示为True,这行运行:

return True

如果没有使用"return"在这里,其他线路也会运行。但是在本例中,程序结束函数并返回值"true"。return"下面的其他行甚至不能运行

它不是&;if&;的层次结构。函数就是这样工作的

最新更新