Python数字反转代码出现'inf'报错的问题求助
Python数字反转代码返回'inf'的问题解决
你的代码运行后返回inf,核心原因是Python与C语言的除法行为差异:
- Python中
/是浮点数除法,比如输入358时,Nb = Nb/10会依次得到35.8、3.58、0.358……永远不会等于0,导致循环无限执行。inv会被不断乘以10加余数,最终数值超出浮点数范围,变成无穷大(inf)。 - 而C语言中整数使用
/做除法是取整运算,Nb会逐步变为35、3、0,循环能正常终止。
修正后的代码
把浮点数除法改成Python的整数除法运算符//即可解决:
def envers(Nb): inv = 0 cond = True while cond: s = Nb % 10 inv = (inv * 10) + s Nb = Nb // 10 # 替换为整数除法,自动向下取整 if Nb == 0: cond = False return inv data = int(input("give num")) res = envers(data) print(res)
简化版代码(更简洁的写法)
可以直接用Nb > 0作为循环条件,去掉多余的cond变量:
def envers(Nb): inv = 0 while Nb > 0: s = Nb % 10 inv = inv * 10 + s Nb = Nb // 10 return inv data = int(input("give num")) res = envers(data) print(res)
内容的提问来源于stack exchange,提问作者Abdelhak Mez
相关产品推荐
相关产品推荐

