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

时间:2019-02-09 13:51:48

标签: 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)

我在做什么错,如何解决?

4 个答案:

答案 0 :(得分:2)

如上所述,您需要将整数除以整数。

替换

n = n/10

作者

n = n // 10

//分为int而不是float

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

问题在于用10除法会将n隐式转换为float。假设n是整数。

更改

n=n/10

to(防止隐式转换为float

n=int(n/10) or n=n//10

n.b。最初的问题是您确实进行了float转换,但是由于浮点数不正确,退出条件n!=0并没有达到您的预期。

答案 3 :(得分:0)

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

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
>>> 

注意-除letter之外,我使用的变量可以更改为任意值。