为何Python整数反转代码输出'inf'?求错误排查与修复方法
嘿,我来帮你揪出代码里的问题!
你的核心错误在于使用了普通除法 / 而非整数除法 //,这直接导致了无限循环和最终的 inf 输出。
问题拆解
当你执行 n = n / 10 时,Python会返回浮点数结果:
- 第一次循环后,
345/10得到34.5,而不是整数34 - 后续循环里,
n会变成3.45、0.345、0.0345……永远不会等于0,循环会无限执行 - 随着循环不停运行,
r = r *10 +d会持续累加数值,最终超出浮点数的取值范围,就变成了inf(无穷大)
修复后的代码
把除法操作改成整数除法 //,这样每次都会将 n 转换为整数,直到 n 变为0时循环正常终止:
def intreverse(n): r = 0 while n != 0: d = n % 10 r = r * 10 + d n = n // 10 # 替换为整数除法 print(r) intreverse(345)
现在运行代码,输入345就能得到预期的反转结果543了!
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

