0

我正在尝试手动(没有内置函数)反转一串文本,但是代码给了我一个“列表分配索引超出范围” 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)
4

5 回答 5

1

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

如果要向 list_rev 添加元素,请尝试.append().extend().insert().

于 2013-04-08T17:01:46.330 回答
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'],)
于 2013-04-08T17:00:46.593 回答
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) )
于 2013-04-08T17:07:11.150 回答
0

您也可以使用插入简单地解决这个问题,

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
于 2014-03-06T04:13:57.963 回答
0

使用字符串的另一种选择;

def reverse(text):
  reversed = ''
  for index in range(len(text)-1, -1, -1):
    reversed += text[index]
  return reversed
于 2018-11-05T13:22:41.460 回答