为什么这个反转整数的代码打印"inf"?

  • 本文关键字:代码 打印 整数 inf 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)

做错了什么,我该如何解决?

如上所述,您需要整数到整数除法。

取代

n = n/10

n = n // 10

//分为int而不是float.

如果可以的话,你的问题可以在没有任何数学的情况下解决

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

注意 - 我使用的变量可以更改为您喜欢的任何变量,除了 letter .

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

改变

n=n/10

到(防止隐式转换为float(,

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

:注:最初的问题是您确实进行了float转换,然后由于浮点不准确,您的退出条件n!=0没有得到预期的满足。

最新更新