Python 为什么这段代码会反转整数打印';inf';?
我正在编写一个程序,用Python打印整数的倒数。我希望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。假设
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