2013-04-08 54 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