注
我正在编写一个程序来使用 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
没有得到预期的满足。