Python公元纪年转世纪程序无报错却无法执行,请求排查问题
问题排查与修复方案
代码存在的问题
- 未导入math模块:使用
math.ceil()前没有导入math库,运行时会触发报错。 - 缩进错误:
if year%100==0:下面的century-=1没有缩进,违反Python语法规则。 - 未定义输入变量:调用
solution(year)时,year变量未赋值,程序无法获取要计算的年份。 - 逻辑错误:原逻辑对整百年份的处理完全错误——1700用
math.ceil(1700/100)得到17,再减1会返回16,和测试用例要求的17不符。
修复后的代码
直接通过整数运算实现逻辑,无需依赖math模块,更简洁准确:
def solution(year): if year % 100 == 0: return year // 100 else: return year // 100 + 1 # 测试用例验证 print(solution(1905)) # 输出20 print(solution(1700)) # 输出17
逻辑说明
- 整百年份(如1700):直接除以100取整,得到对应世纪。
- 非整百年份(如1905):除以100取整后加1,得到对应世纪。
内容的提问来源于stack exchange,提问作者陳冠璇
相关产品推荐
相关产品推荐

