2015-12-17 160 views
4

我不明白我做了什麼錯!Python列表錯誤列表索引超出範圍

x=7 
List=[] 
for i in range(0,x): 
    verify=False 
    while verify==False: 
     Values=input("Enter Code") 
     verify=Values.isdigit() 

    ValueList=int(Values) 
    List.append(ValueList) 
    value1=int(List[0]) 
    value2=int(List[1]) 
    value3=int(List[2]) 
    value4=int(List[3]) 
    value5=int(List[4]) 
    value6=int(List[5]) 
    value7=int(List[6]) 
    value8p1=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1) 
    value9=math.ceil(value8p1//10) 
    print(value9) 

我的老師沒有任何知道,我覺得這是愚蠢的東西....

+0

後'List.append(值列表)'應該是外面循環中的代碼。 – Zety

+0

它在哪裏崩潰?你會得到什麼輸出?任何例外? – ygesher

+0

這看起來不正確的:'value9 = math.ceil(value8p1 // 10)'。爲什麼是雙斜槓? – ygesher

回答

1

如果我進入1234然後Values包含字符串"1234"

您再投的字符串爲整數

ValueList=int(Values) # converts string "1234" to integer 1234 

和整數添加到空列表

List.append(ValueList)# List not looks like this List=[1234] 

所以你的列表中只有一個元素
因此List[1]超出範圍

BTW:不要對你建在像list名後的值。
請參閱官方naming conventions

編輯

當你糾正你縮進你的代碼仍然是危險的。
如果你改變x的東西< 7你的代碼會崩潰。

仍然是危險的代碼

x=7 
List=[] 
for i in range(0,x): 
    verify=False 
    while verify==False: 
     Values=input("Enter Code") 
     verify=Values.isdigit() 

    ValueList=int(Values) 
    List.append(ValueList) 

value1=int(List[0]) 
value2=int(List[1]) 
value3=int(List[2]) 
value4=int(List[3]) 
value5=int(List[4]) 
value6=int(List[5]) 
value7=int(List[6]) 
value8p1=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1) 
value9=math.ceil(value8p1//10) 
    print(value9) 

所以你應該讓你計算在一個循環,以避免指數錯誤:

更新的代碼

x = 4 
values = [] 
for i in range(0, x): 
    verify = False 
    while verify == False: 
     value = input("Enter Code") 
     verify = value.isdigit() 

    values.append(int(value)) 

result = 0 
for index, value in enumerate(values): 
    if index % 2 == 0: 
     result += value * 3 
    else: 
     result += value 

finalResult = math.ceil(result // 10) 
print(finalResult) 
2

這只是一個缺口問題。

import math 


x=7 
List=[] 
for i in range(0,x): 
    verify=False 
    while verify==False: 
     Values=input("Enter Code") 
     verify=Values.isdigit() 

    ValueList=int(Values) 
    List.append(ValueList) 
value1=int(List[0]) 
value2=int(List[1]) 
value3=int(List[2]) 
value4=int(List[3]) 
value5=int(List[4]) 
value6=int(List[5]) 
value7=int(List[6]) 
value8p1=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1) 
value9=math.ceil(value8p1//10) 
print(value9) 
+0

@CODE_KILLER進行檢查。 – Zety

1

這裏的工作代碼:

import math 

x=7 
List=[] 
for i in range(0,x): 
    verify=False 
    while verify==False: 
     Values=raw_input("Enter Code") 
     verify=Values.isdigit() 
     print verify 

    ValueList=int(Values) 
    List.append(ValueList) 
value1=int(List[0]) 
value2=int(List[1]) 
value3=int(List[2]) 
value4=int(List[3]) 
value5=int(List[4]) 
value6=int(List[5]) 
value7=int(List[6]) 
value8=(value1*1)+(value2*3)+(value3*1)+(value4*3)+(value5*1)+(value6*3)+(value7*1) 
value9=math.ceil(value8//10) 
print(value9)