Python 单词反转程序随机跳过字母?

Python 单词反转程序随机跳过字母?,python,Python,我的程序一直在随机跳过字母!例如,“coolstory”变成“yrotsloc”,“awesome”变成“mosewa” 代码如下: def reverse(text): length = len(text) reversed_text = [] for i in range(0,length + 1): reversed_text += [''] original_list = [] for l in text: orig

我的程序一直在随机跳过字母!例如,“coolstory”变成“yrotsloc”,“awesome”变成“mosewa”

代码如下:

def reverse(text):
    length = len(text)
    reversed_text = []
    for i in range(0,length + 1):
        reversed_text += ['']
    original_list = []
    for l in text:
        original_list.append(l)
        new_place = length - (original_list.index(l))
        reversed_text[new_place] = l
    return "".join(reversed_text)
编辑:谢谢大家的回答。我刚刚重新发现了这个被遗忘的账户。我可以向你保证,6年后我知道如何正确地反转各种不同语言中的字符串:)

试试看

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

当您有重复的字母时会发生这种情况,因为

original_list.index(l)
对于相同的
l
,将始终返回相同的值。因此,
new_place
对于位于不同位置的两个相同字母将是相同的

Python中反转字符串的一种常见方法是切片:

>>> s = "hello"
>>> s[::-1]
'olleh'
您也可以使用,但它返回一个
反向对象
(不是字符串)。如果要以相反的顺序迭代字符串,这是一个更好的选项:

>>> for c in reversed(s):
...     print c
... 
o
l
l
e
h

这是一种非常复杂的反转字符串的方法<代码>文本[::-1]就可以了。它不是那么随机的。它在重复的字母上。。。你正在使用索引…为什么我运行这个,它给了我
'yrtsloc'
,而不是
yrotsloc
。您的描述是错误的,还是这不是您的实际代码?这看起来确实应该是错误的,但我看不出它是如何解释问题中给出的示例的?@JackAidley,
reversed\u text[new\u place]=l
设置了一个相同的现有位置char@JackAidley:根据这一解释,它应该产生
yrtsloc
,而不是
yrotsloc
。如果你运行代码…它会产生
yrtsloc
。因此,问题中给出的示例要么是错误的,要么代码不是OP的实际代码。不管怎样,阿尔沙吉已经解释了OP给我们的代码有什么问题…