我的计算机科学老师分配了一个实验室,我们需要创建一个循环,创建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:列表分配索引超出范围
非常感谢任何帮助。
谢谢,
哈里森
答案 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,我们递增数组中该索引处的值。