我正在尝试编写一个Python函数,该函数将数字设为input
,并将其反转数字返回为output
。例如:1234返回4321。
这是我尝试的,但它只返回''
def reverse(num):
L=[]
x=str(num)
L1=list(x)
for i in L1:
L.insert(0,i)
print 'the reversed num is:'
x=''
for i in L:
x.join(i)
return x
任何想法?
答案 0 :(得分:3)
def reverse(num):
return str(num)[::-1]
或一行:
lambda x: str(x)[::-1]
答案 1 :(得分:2)
嗯,简单的解决方案就是这个:
>>> int(str(1234)[::-1])
4321
您的代码可以通过更改部分来修复
for i in L:
x.join(i)
return x
到
for i in L:
x += i
return x
或者,只需用
替换该部分return ''.join(L)
您的代码出了什么问题?由于错误的缩进,您在for循环的第一次迭代中返回。您从未为x.join(i)
指定名称,因此返回值已丢失。你期望join
做什么,我不知道。
答案 2 :(得分:1)
首先,通过转换为字符串,切割字符串并将其转换回数字,有一种更简单的方法。
def reverse(num):
return int(str(num)[::-1])
其次,您的代码中存在多个错误:
1)你的return语句在循环中,所以它会在第一次迭代后返回;
2)x
不会改变,因为x.join()
创建了一个新字符串,并且没有修改字符串x
(顺便说一下这是不可变的)
3)无需将字符串转换为列表,因为您可以直接遍历字符串(for i in x: ...
)
4)join()
将迭代器作为参数。不需要第二个循环:return ''.join(L)
答案 3 :(得分:1)
谢谢大家的有益想法。
这是我的解决方案:
def reverse(n):
reverse=0
while(n>0):
dig=n%10
reverse=reverse*10
reverse=reverse+dig
n=n/10
return reverse
答案 4 :(得分:0)
def reverse(num)
return str(num)[::-1]
答案 5 :(得分:0)
其他用户已经给出了很好的答案。出于研究目的,这是一个不同的。
num = 1234
print "".join(reversed(str(num)))
# 4321
之后你可以转换为int。