我试图在参赛者数量和分数列表中找到最低分。在第6行,我收到错误:
if score[u[1]] == score[0]:
TypeError: 'int' object is not subscriptable
我试图通过循环检查整个2d数组,找出哪个得分与获得的最低分数匹配并检索参赛者编号
for x in range(contestants):
CN = x+1
score1.insert(x,[[CN],[score[x]]])
score.sort
for u in score:
if score[u[1]] == score[0]:
KO = score[u[0]]
print (KO)
分数看起来像这样:
for i in range (contestants):
j1 = int(input("Judge 1 enter your score for the contestant: "))
j2 = int(input("Judge 2 enter your score for the contestant: "))
j3 = int(input("Judge 3 enter your score for the contestant: "))
j4 = int(input("Judge 4 enter your score for the contestant: "))
j5 = int(input("Judge 5 enter your score for the contestant: "))
print("Round over, next contstant")
scores = [j1,j2,j3,j4,j5]
scoreJ1.append(scores[0])
scoreJ2.append(scores[1])
scoreJ3.append(scores[2])
scoreJ4.append(scores[3])
scoreJ5.append(scores[4])
scores.sort()
scores.pop(0)
scores.pop(3)
#proud of this
score.insert(i,scores[1]+scores[2]+scores[0])
感谢您的帮助。
答案 0 :(得分:1)
您收到的错误消息是TypeError: 'int' object is not subscriptable
。让我们打破这个:
TypeError
告诉您,您正在尝试在某处应用不当操作is not subscriptable
告诉您,不恰当的操作会在事后添加一对[ ]
。'int' object is not subscriptable
告诉您,您正在尝试将其转换为int。现在让我们考虑生成此错误的代码行:
if score[u[1]] == score[0]:
请注意,有三对[ ]
直接放置在某些东西之后:其中一个必须具有int
类型。因此有3名候选人
score
u
score
因此,我们得出结论:score
或u
是一个整数。
查看您提供的上下文
for u in score:
如果score
不是可迭代的,那么这一行就会失败。 int
不可迭代,因此我们得出结论score
不是整数。这导致我们得出结论:u
(它是容器score
的某个元素)是一个整数。
有关您的代码的其他评论(包含许多问题):
可疑的是,在下一行使用score1
时,您会在一行上引用score
(其他地方没有引用)。你确定前者不应该只是score
吗?
score.sort
访问sort
的{{1}}方法,但不会调用它。如果你想在某个地方存储那个方法,或者把它传递到某个地方,这在Python中是有意义的,但你不是那样做的。因此,您几乎肯定忘记调用该函数:您可以在其后面添加score
,如下所示:()
。
在您的第二个代码块store.sort()
中,朋友似乎无法在任何地方定义,因此此代码无法使用,除非您还有其他内容未显示。
这应该给你足够的思考。