2015-02-23 99 views
0

我正在通過2014年的hp代碼戰爭的東西,我打這個,不能失去知覺。我不斷收到一個運行時錯誤,提示「列表索引超出範圍」。爲什麼在這個for循環中列表索引超出範圍?

upc = input("please enter the first upc") 
upc1 = upc.split() 
ite = 0 
cd = 0 
for x in range (0,6): 
    cd = cd + int(upc1[ite]) 
    ite = ite + 2 
print (cd) 
cd = cd * 3 
print (cd) 
ite = 1 
for x in range (1,12, 2): 
    cd = cd + int(upc1[x]) 
print (cd) 
cd = cd % 10 
cd = 10 - cd 
print (upc + str(cd)) 

的問題是第13行,這是這一行:

for x in range (1,12, 2): 
    cd = cd + int(upc1[x]) 
+3

'1,3,5,7,9,11'...... upc1必須小於其中的一個值 – 2015-02-23 17:39:29

+0

這是真正的縮進嗎? – Makoto 2015-02-23 17:40:23

+0

我輸入0 1 2 3 4 5 6 7 8 9 0.它在for循環的第一次迭代時命中 – 2015-02-23 17:42:05

回答

0

多久UPC1?第一次在這裏循環:

for x in range (0,6): 
    cd = cd + int(upc1[ite]) 
    ite = ite + 2 

您正在訪問元素0,2,4,6,8,10。

產生錯誤的第二循環:

for x in range (1,12, 2): 
    cd = cd + int(upc1[x]) 

被訪問元素1,3,5,7,9,11。所以這是一個很好的選擇,你的名單upc1只有10個元素。不要在Python不要忘記,數組元素0開始,所以如果你想訪問0,2,4,6,8,10再次你的範圍函數應該是這樣的:

for x in range(0,11,2) 

希望幫助!

+0

但不會導致在後面的循環之一,而不是第一個錯誤? – 2015-02-23 17:54:02

+0

它沒有,錯誤是在最後一次迭代時,當x = 11。獲取它打印循環內的x進行檢查。 – FJC 2015-02-23 17:59:35