Python 用于反转文本字符的函数

Python 用于反转文本字符的函数,python,Python,我试图做一个反向函数,它接受输入(文本)并输出反向版本。所以“Polar”会打印raloP def reverse(text): list = [] text = str(text) x = len(text) - 1 list.append("T" * x) for i in text: list.insert(x, i) x -= 1 print "".join(list) reverse("Something

我试图做一个反向函数,它接受输入(文本)并输出反向版本。所以
“Polar”
会打印
raloP

def reverse(text):
    list = []
    text = str(text)
    x = len(text) - 1
    list.append("T" * x)
    for i in text:
        list.insert(x, i)
        x -= 1
    print "".join(list)

reverse("Something")
更简单的方法是:

def reverse(text):
  rev = ""
  i = len(text) - 1
  while i > -1:
    rev += text[i]
    i = i - 1
  return rev


print(reverse("Something"))
结果:
gnihtemoS

您可以尝试:

def reverse(text):
  return text[::-1]

print(reverse("Something")) # python 3
print reverse("Something") # python 2
你可以这么做

    print "something"[::-1]

正如其他人提到的,Python已经提供了几种方法来反转字符串。简单的方法是使用扩展切片:
s[:-1]
创建字符串
s
的反向版本。另一种方法是使用
reversed
函数:
'.join(reversed(s))
。但我想尝试为自己实现它可能会很有启发性

您的代码有几个问题

def reverse(text):
    lst = []
    x = len(text)
    lst.extend("T" * x)
    for i in text:
        x -= 1
        lst[x] = i
    print "".join(lst)

reverse("Something")
首先,

list = []
您不应该使用
list
作为变量名,因为这会隐藏内置的
list
类型。在这里它不会有什么坏处,但它会使代码变得混乱,如果您稍后在函数中尝试使用
list()
,则会引发异常,并显示一条神秘的错误消息

text = str(text)
这是多余的<代码>文本已经是一个字符串
str(text)
返回原始字符串对象,因此它不会影响任何内容,但仍然毫无意义

x = len(text) - 1
list.append("T" * x)
您在这里有一个off-by-one错误。您确实希望使用与原始字符串中相同数量的项来填充列表,这是短1。此外,此代码将字符串作为单个项目附加到列表中,而不是作为每个字符的
x
单独项目

list.insert(x, i)
.insert
方法将新项目插入列表,插入点后的后续项目上移以腾出空间。我们不想这样,我们只想覆盖
x
位置的当前项,我们可以通过索引来实现

当代码的行为与预期不符时,最好在关键位置添加
print
语句,以确保变量具有应有的值。这使我们更容易发现哪里出了问题


无论如何,这里有一个修复版本的代码

def reverse(text):
    lst = []
    x = len(text)
    lst.extend("T" * x)
    for i in text:
        x -= 1
        lst[x] = i
    print "".join(lst)

reverse("Something")
输出

gnihtemoS

下面是另一种方法,展示了如何使用
。插入

def reverse(text):
    lst = []
    for i in text:
        lst.insert(0, i)
    print "".join(lst)

最后,我们可以使用字符串连接,而不是使用列表。但是,这种方法的效率较低,尤其是对于大型字符串,但是在现代版本的Python中,它的效率并不像以前那样低,因为
str
类型已经过优化,可以处理这种相当常见的操作

def reverse(text):
    s = ''
    for i in text:
        s = i + s
    print s


你真的应该学习Python 3,Python 2在2020达到了它的正式生命。

如果你只需要功能,考虑<代码> RealSudio()/代码> Python BuiTin。这个代码有很多误解。我最困惑的是
list.append(“T”*x)
。这应该做什么?将字符串切分,取每个字符,然后将-1设置为步骤:
“Polar”[:-1]
给出您想要的答案如果下面的答案之一解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道你的问题已经解决到令你满意的程度,并让帮助你的人相信你的帮助。请参阅以获得完整的解释。哇,太简单了,我不知道这是可能的,谢谢您提供的信息。在这种情况下,为了便于操作,您是否能够添加一些指示,说明为什么他们的代码不起作用?虽然这是最简单的方法,但问题需要一个函数哦,好吧,我的错误这是唯一的答案解决问题(即使问题只是暗示的)@roganjosh谢谢。说“不要那样做”并向OP展示更好的方法是很好的,但是当你想理解为什么你的算法没有按照你期望的方式运行时,这也有点令人沮丧。你可以在顶部的帖子上看到我的评论,试图引出你在回答中提到的细节。我在打电话,所以我自己没法发。“教人钓鱼”,以及所有这些:)@roganjosh确实如此,这就是为什么我对你的评论投了赞成票。@EricLues这个答案详细解释了为什么你的解决方案是错误的,以及如何修复它,你应该阅读其中的每一个字