在python函数中反转文本

时间:2013-04-08 16:55:44

标签: python string list error-handling indexing

我正在尝试手动(没有内置函数)反转一串文本,但代码为list_rev[u] = list_[i]提供了“列表分配索引超出范围”。我不明白为什么会这样?我要做的是从list_获取文本,然后以相反的顺序将其放在list_rev中,然后打印list_rev

谢谢!

text = raw_input("Word?")

text = str(text)

def reverse(text):
    list_rev = []
    list_ = []
    length = int(len(text))
    k = 0
    while k < (length):
        list_.append(str(text)[k])
        k += 1

    i = int(length-1)
    u = 0
    while i >= 0:
        list_rev[u] = list_[i]
        u += 1
        i -= 1
    return list_rev,

print reverse(text)

5 个答案:

答案 0 :(得分:1)

您从表达式list_rev[u]收到错误“列表分配索引超出范围”,因为索引(u)超出了范围0 .. len(list_rev)-1。特别是,list_rev为空,因此u没有可能的值引用list_rev的有效元素。

如果您要将 new 元素添加到list_rev,请尝试.append().extend().insert()

答案 1 :(得分:0)

您可以将字符附加到列表中:

text = raw_input("Word?")

text = str(text)

def reverse(text):
    list_rev = []
    list_ = []
    length = int(len(text))
    k = 0
    while k < (length):
        list_.append(str(text)[k])
        k += 1

    i = int(length-1)
    u = 0
    while i >= 0:
        list_rev.append(list_[i])
        i -= 1
    return list_rev,

print reverse(text)

输出:

Word?qwerty
(['y', 't', 'r', 'e', 'w', 'q'],)

答案 2 :(得分:0)

list_rev是一个空列表:你必须追加char:

text = raw_input("Word?")

text = str(text)

def reverse(text):
    list_rev = []
    list_ = []
    length = int(len(text))
    k = 0
    while k < (length):
        list_.append(str(text)[k])
        k += 1

    i = int(length-1)
    u = 0
    while i >= 0:
        list_rev.append(  list_[i] )
        u += 1
        i -= 1
    return list_rev

print ''.join(  str(elem) for elem in reverse(text) )

答案 3 :(得分:0)

您也可以使用insert,

简单地解决此问题
def reverse(text):
    reverse_list = []
    for a in text:
        reverse_list.insert(0,a)
    return "".join(reverse_list)

text = raw_input("Word?")

reverse_text = reverse(text)

print reverse_text

答案 4 :(得分:0)

另一个使用字符串的选项;

def reverse(text):
  reversed = ''
  for index in range(len(text)-1, -1, -1):
    reversed += text[index]
  return reversed