Python列表实验室的索引错误

时间:2018-03-12 16:09:18

标签: python python-3.x

我的计算机科学老师分配了一个实验室,我们需要创建一个循环,创建50个列表,并在每次输入数字时为每个列表的值加1。我们不允许有一个列表,只需使用count函数来完成这个任务(出于某种奇怪的原因)。

基本上,我希望这段代码能够正常运行,但需要老师想要的方式:

l_a=[]

for num in range(0,10):
    y=int(input("Enter a number: "))
    l_a.append(y)

print(l_a)

for x in range(0,51):
    z=(l_a.count(x))
    if z==1:
        print("There is "+str(z)+" "+str(x)+".")
    if z>1:
        print("There are "+str(z)+" "+str(x)+"'s.")

这是我到目前为止创建的代码:

list=[]

for index in range(0,51):
    list[index]=0

for num in range(0,51):
    y=(int)(input("Enter a number: "))
    list[y]+=1

我收到以下错误: IndexError:列表分配索引超出范围

非常感谢任何帮助。

谢谢,

哈里森

3 个答案:

答案 0 :(得分:0)

说明索引超出范围的原因是说明列表

lst = []

您实际上是在创建一个长度为0的列表。

如果要创建特定范围的列表,可以执行以下操作:

lst = [0] * 52

基本上创建一个52 0的列表。

虽然根据我的理解,您想要创建一个包含多个列表的列表,但您可以这样做

lst = [[0]] * 52

创建一个包含52个列表的列表,每个列表包含一个0。

我认为两种方式都不那么pythonic,你应该在创建新成员时使用append函数。

lst.append([0])

会将[0]列表附加到列表的末尾。

答案 1 :(得分:0)

我可能会这样做:

d = {}
i = 0
while i =< 50:
  d[i]=['1']
  i =+ 1

答案 2 :(得分:0)

使用教师的结构

lst=[]
for index in range(0,51):
    lst.append(0)
print(lst)

y=(input("Enter a number: "))
while y.isdigit():
    y=(int)(y)
    lst[y]+=1
    y=(input("Enter a number: "))

print(lst)

但是,我们可以写得更简洁

lst = [0] * 50
while True:
    y=(input("Enter a number: "))
    if not y.isdigit(): break
    y=(int)(y)
    if y < 50: lst[y]+=1

print(lst)

这将创建一个包含50个零的列表。然后我们可以运行代码的输入部分。首先,我们检查输入是否为数字,如果不是我们break。然后,如果数字小于50,我们递增数组中该索引处的值。