|
|
发表于 2025-4-4 16:05:49
|
显示全部楼层
问题分析及解决方案
你的代码存在两个关键问题:
- 逻辑结构错位:闰年判断代码被错误地嵌套在 while 循环内部,导致只有输入错误时才会触发判断
- 类型转换错误:在循环中将输入转为 int 后,后续循环条件 year.isdigit() 会报错(因为此时 year 是整数类型)
修正后的代码
- year = input("请输入一个年份:")
- # 先验证输入合法性
- while not year.isdigit():
- year = input("抱歉,您的输入有误,请输入一个整数:")
- # 类型转换和闰年判断应放在循环外
- year = int(year)
- if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
- print(f"{year} 是闰年")
- else:
- print(f"{year} 不是闰年")
复制代码
改进说明
- 使用单独的循环处理输入验证,确保获得合法整数
- 将类型转换和闰年判断放在循环结束后执行
- 合并了冗余的条件判断,使逻辑更简洁
- 使用 f-string 提升代码可读性
这个版本会先确保输入是纯数字,然后统一进行类型转换和闰年判断,避免原代码中可能出现的类型错误和逻辑遗漏。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|