2013-04-08 24 views
0

我想手动(没有内置函数)反转一个文本字符串,但代码给了我一个“列表分配索引超出范围”list_rev[u] = list_[i]。我不明白为什么会发生这种情况?我想要做的是从list_中获取文本,并以list_rev的相反顺序放置,然后打印list_revpython函数中的反向文本

谢谢!

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

'my_string = “富酒吧巴兹”; reverse_string = my_string [:: - 1]' – MattDMo 2013-04-08 16:58:27

+0

您需要追加到list_rev,它的大小为0,并且您永远不会更改它的大小。除此之外,由于太多原因,这是可怕的代码.... – 2013-04-08 17:01:32

回答

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'],) 
1

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

如果你想添加一个新元素到list_rev,尝试.append().extend(),或者.insert()

0

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.append( list_[i]) 
     u += 1 
     i -= 1 
    return list_rev 

print ''.join( str(elem) for elem in reverse(text)) 
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