You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3反转整数函数返回inf问题:Python2可正常运行

问题分析与解决:Python3中反转整数返回inf的原因

哦,这个坑很多人刚从Python2转Python3的时候都会踩!核心问题出在除法运算符/的行为差异上。

先看你代码里的关键行:n /= 10

  • 在Python2中,当两个整数执行/除法时,结果会自动取整(地板除),比如123/10得到12,12/10得到1,1/10得到0,这时候while n>0的循环就会终止,所以函数能正常返回反转后的整数。
  • 但在Python3里,/运算符不管操作数是不是整数,返回的都是浮点数:123/10得到12.3,12.3/10得到1.23,1.23/10得到0.123……这个数值会无限趋近于0,但永远不会等于0,导致while n>0的循环永远不会停止!

循环一直跑的话,r会不断执行r *=10和r +=n%10,数值会越来越大,直到超出Python浮点数的最大表示范围,最终就返回了inf(无穷大)。

解决方法

把代码里的除法改成Python3的整数地板除,也就是用//运算符替换/,修改后的代码如下:

a = 123
def rev(n):
    r = 0
    while n > 0:
        r *= 10
        r += n % 10
        n = n // 10  # 这里改用整数除法,确保n始终是整数
    return r
print(rev(a))  # 现在会正常输出321

这样每次n都会被取整为整数,当n变成0时循环就会终止,函数就能正确返回反转后的整数了。

另外补充个小细节:这个函数目前只处理正整数,如果要支持负数,你可以先把负数转正,反转后再添上负号,不过这是额外的优化点啦~

内容的提问来源于stack exchange,提问作者Md Ariful islam Protik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:38:40