Python 为什么这段代码会反转整数打印';inf';?

Python 为什么这段代码会反转整数打印';inf';?,python,Python,我正在编写一个程序,用Python打印整数的倒数。我希望345的输出是543(也就是说,345反向),但我得到的是inf 这是我的密码: def intreverse(n): r = 0 while n != 0: d = n % 10 r = r * 10 + d n = n / 10 print(r) intreverse(345) 我做错了什么?我该如何修复它?问题是用10除法,隐式地将n转换为float。假设

我正在编写一个程序,用Python打印整数的倒数。我希望
345
的输出是
543
(也就是说,
345
反向),但我得到的是
inf

这是我的密码:

def intreverse(n):
    r = 0

    while n != 0:
        d = n % 10
        r = r * 10 + d
        n = n / 10

    print(r)

intreverse(345)

我做错了什么?我该如何修复它?

问题是用
10
除法,隐式地将
n
转换为
float
。假设
n
是一个整数

变,

n=n/10
要(防止隐式转换为
浮点



n、 b.最初的问题是,您确实进行了
float
转换,然后退出条件
n=由于浮点不准确,0未如您预期的那样得到满足

如果可以的话,你的问题根本不用数学就可以解决

def intreverse(n):
    return int(str(n)[::-1])

另一种可能的方法是将数字放入数组中

def reverse(number):
    listing = []
    intversion = ""
    for letter in str(number):
        listing.insert(0, letter)
    for x in range(0, len(listing)):
        intversion += str(listing[x])
    print(int(intversion))

reverse(345)
结果如下:

543
>>> 

注意-我使用的变量可以随意更改,除了上面提到的需要整数到整数除法之外

替换

n = n/10


/
除法为
int
而非
float

旁注:转换为字符串、反转并重新转换为整数是一种很好的方法easier@user8408080代码中的注释:
intreverse=lambda i:int(str(i)[::-1])
Hi John!欢迎来到堆栈溢出。请填写您的答案,以确保缩进正确。谢谢基本上,这是
int(str(i)[::-1])
的过度复杂版本。另外,您正在做的是有效地重写标准函数
reversed
join
哦,我是python新手,我还不知道如何使用这些函数,所以我一直都是这样做的it@JohnLiu没问题,伙计;我不是故意要说粗话什么的。刚刚说了这句话,所以你知道这是为了将来。这对你来说可能是个好主意,读一读这本书,过一个愉快的一天:)
n = n/10
n = n // 10