Python列表错误,列表索引超出范围

时间:2015-12-17 09:42:38

标签: python arrays list

我不明白我做错了什么!

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)

我的老师也不知道,我觉得这有点蠢......

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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 :(得分: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)