5

我的程序总是随机跳过字母!例如,“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 年后我知道如何正确反转各种不同语言的字符串 :)

4

2 回答 2

8

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

original_list.index(l)

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

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

>>> s = "hello"
>>> s[::-1]
'olleh'

您也可以使用reversed(),但这会返回一个reversed object(不是字符串)。如果您想以相反的顺序迭代字符串,这是一个更好的选择:

>>> for c in reversed(s):
...     print c
... 
o
l
l
e
h
于 2013-08-19T19:14:52.623 回答
3

尝试

def reverse(text):
    return text[::-1]
于 2013-08-19T19:14:35.847 回答