写一个返回反转数字的函数

时间:2016-02-08 10:09:28

标签: python python-2.7

我正在尝试编写一个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

任何想法?

6 个答案:

答案 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]

Reverse a string in Python

答案 5 :(得分:0)

其他用户已经给出了很好的答案。出于研究目的,这是一个不同的。

num = 1234
print "".join(reversed(str(num)))
# 4321

之后你可以转换为int。