2014-02-05 44 views
-1

我嘗試「超出範圍列表索引」創建這個索裏的代碼,並顯示消息爲什麼這個源代碼是「列表索引超出範圍」

def main(): 
    pass 
data = [1,2,3,4,5] 
temp = data[0] 
i = 0 
n = len(data) 
while i<n: 
    data[i]=data[i+1] 
    i+=1 
print data 
if __name__ == '__main__': 
    main() 

請幫我解決了這個源代碼

+0

除了代碼之外,您還應該發佈異常回溯。它通常包含發生錯誤的確切行。 –

+0

我的請求示例 –

回答

2

基本上,您可以通過將while i<n更改爲while i<n-1來解決此問題。

但更好的是,變更:

i = 0 
n = len(data) 
while i<n: 
    data[i]=data[i+1] 
    i+=1 

要:

n = len(data) 
for i in range(0,n-1): 
    data[i] = data[i+1] 
data[n-1] = ... # Whatever you want to set the last entry to 

如果你想要做的就是除去第一要素,然後只需使用:

temp = data.pop(0) 
print data 
+0

如何使用while修復該源代碼? –

+0

請在答案中看到第一行:「你可以通過改變'while while i

+0

ouhh對不起兄弟,我不小心:) –

1

while循環的最後一次迭代中,語句data[i+1]嘗試訪問列表data的不存在索引i+1

+0

我不理解,我向你請求源代碼,例如 –

1

如果i的值是4,那麼數據[i + 1]是指第五個索引,它沒有被定義

相關問題