Python闰年判断代码疑问:为何采用(year % 100 != 0 or year % 400 == 0)逻辑
理解闰年判断代码里的逻辑部分
首先得明确公历闰年的判定规则,这是这段代码的核心依据:
- 普通闰年:能被4整除,但不能被100整除的年份(比如2020、2024)
- 世纪闰年:能被400整除的整百年份(比如2000,而1900不是)
教授写的(year % 100 != 0 or year % 400 == 0),就是把上面两个规则用逻辑表达式翻译了出来:
year % 100 != 0:对应「不能被100整除」,配合前面的year % 4 == 0,就覆盖了普通闰年的情况year % 400 == 0:对应「能被400整除」,专门处理整百年份的特例——毕竟整百年份能被4整除,但大部分不是闰年,只有能被400整除的才是
结合完整代码来看:
def leap(year): return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
整个表达式的意思就是:年份能被4整除,并且(要么不能被100整除,要么能被400整除),完全匹配闰年的判定规则。
举几个例子验证:
- 2020:
2020%4==0为True,2020%100!=0为True → 整体返回True(是闰年) - 1900:
1900%4==0为True,但1900%100!=0为False,1900%400==0也为False → 整体返回False(不是闰年) - 2000:
2000%4==0为True,2000%400==0为True → 整体返回True(是闰年)
内容的提问来源于stack exchange,提问作者Sugandha Tondon
相关产品推荐
相关产品推荐

