咨询Python代码中currentYear%4/%100/%400的含义及闰年判断逻辑
闰年判断逻辑:%4、%100、%400到底在干嘛?
首先得明确%这个运算符——它是取余运算符,用来计算一个数除以另一个数后剩下的余数。比如currentYear % 4 == 0,意思就是currentYear除以4之后余数为0,换句话说这个年份能被4整除。
接下来直接说闰年的判断规则,这就是代码里三个取余条件的核心原因:
- 普通闰年:年份能被4整除,但不能被100整除
- 世纪闰年:年份能被400整除(哪怕它能被100整除)
对应你贴的代码里的条件:
currentYear = int(input('Enter the year: ')) month = int(input('Enter the month: ')) if ((currentYear % 4) == 0 and (currentYear % 100) != 0 or (currentYear % 400) ==0): print('Leap Year')
这个条件其实是把两种闰年情况用or连接起来:
(currentYear % 4 == 0 and currentYear % 100 != 0):满足普通闰年的判定要求currentYear % 400 == 0:满足世纪闰年的判定要求
举几个实际例子你就彻底明白了:
- 2024:2024%4=0,2024%100=24≠0 → 符合第一个条件,是闰年
- 1900:1900%4=0,但1900%100=0,同时1900%400=300≠0 → 两个条件都不满足,不是闰年
- 2000:2000%400=0 → 符合第二个条件,是闰年
为啥要搞这么复杂?因为地球绕太阳一圈的实际时间约为365.2422天,不是刚好365天。如果只按4年一闰,每400年就会多算3天左右,加入能被100整除不闰、能被400整除再闰的规则,就是为了修正这个时间误差。
内容的提问来源于stack exchange,提问作者VincentOfTheHighlands
相关产品推荐
相关产品推荐

