如何用增量与While True函数实现下一个闰年识别程序
解答:寻找输入年份之后的下一个闰年
你的代码存在的核心问题
- 没有逐年检查后续年份是否为闰年,而是直接固定加1或加4,无法覆盖所有场景(比如输入1899,你的代码会输出1900,但1900并非闰年,正确结果应为1904)。
year+=1写在break语句之后,永远不会执行,循环没有实际的年份增量逻辑。- 闰年判断的条件分支混乱,多个分支最终输出相同结果,没有真正区分闰年的不同判定规则。
正确解法代码
def is_leap(year): # 闰年判定逻辑:能被4整除但不能被100整除,或能被400整除 if year % 4 == 0: if year % 100 == 0: return year % 400 == 0 return True return False input_year = int(input("Year: ")) next_year = input_year + 1 # 循环遍历后续年份,直到找到第一个闰年 while True: if is_leap(next_year): print(f"The next leap year after {input_year} is {next_year}") break next_year += 1
逻辑说明
- 闰年判定函数
is_leap:- 先判断年份是否能被4整除,不能则直接排除闰年可能;
- 若能被4整除,再区分是否为整百年:整百年需能被400整除才是闰年(如2000是闰年,1900不是),非整百年直接判定为闰年。
- 寻找下一个闰年:
- 从输入年份的下一年开始检查(题目要求是“该年份之后”的闰年,输入年份本身不算);
- 逐个年份调用
is_leap验证,找到第一个符合条件的年份后输出并终止循环; - 若当前年份不是闰年,年份自增1,继续检查下一个。
测试验证
- 输入2023 → 输出2024(2024是第一个后续闰年)
- 输入2024 → 输出2028(2024之后的下一个闰年是2028)
- 输入1900 → 输出1904(1900不是闰年,后续第一个闰年是1904)
内容的提问来源于stack exchange,提问作者Cheick Sanoh
相关产品推荐
相关产品推荐

