如何修复这个int是不可下标在我的代码



这是我的作业问题。它按降序打印数字最大的名字。我像老师在课堂上展示的那样做了。但是在第15行我一直得到int不可下标。我做错了什么?

参考问题:

假设一个列表以嵌套列表的形式包含每个学生在CSE110、PHY111和MAT110课程中连续获得的分数。您的任务是从用户处获取课程名称作为输入,并根据该课程获得的分数对列表进行排序,以便最终按照获得的分数降序打印学生的姓名,即从获得最高分的学生到获得最低分的学生。

例如,列表可能看起来像lst =[["Alan", 95, 87, 91],["Turing", 92, 90, 83],["Elon", 87, 92, 80],["Musk", 85, 94, 90]]其中,对于每个嵌套列表,第一个索引是学生的姓名,第二个索引是CSE110课程的总分数,第三个索引是PHY111分数,第四个索引是MAT110分数。

=====================================================

Sample Input :
MAT110
Sample Output :
Alan
Musk
Turing
Elon

错误提示:

Enter Desired Course Name: PHY111
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-b99751889edb> in <module>()
13 
14 for i in range(0, len(org_list)):
---> 15     best = org_list[i][index]
16     best_loc = i
17     mod_list = org_list[i]
TypeError: 'int' object is not subscriptable
org_list = [ ["Alan", 95, 87, 91], ["Turing", 92, 90, 83], ["Elon", 87, 92, 80], ["Musk", 85, 94, 90] ]
course = input('Enter Desired Course Name: ')
if course == 'CSE110':
index = 1
elif course == 'PHY111':
index = 2
elif course == 'MAT110':
index = 3
for i in range(0, len(org_list)):
best = org_list[i][index]
best_loc = i
mod_list = org_list[i]
for i in range(i+1, len(org_list)):
if best < org_list[i][index]:
best = org_list[i][index]
best_loc = i
interim = mod_list
org_list[best_loc] = org_list[i]
org_list = interim
for count in range(0, len(org_list)):
print(org_list[count][0])

我不确定这个程序应该做什么,但问题在这几行:

interim = mod_list
...
org_list = mod_list

您之前从org_list中提取了一个子列表,即mod_list不是嵌套列表,而是["Alan", 95, 87, 91],用于第一次循环执行。

现在,用其中一个子列表覆盖org_list。但是,在下一次循环执行中,您无法使用org_list[i][index]访问嵌套列表。

好的,正如有人提到的,我在最后一行犯了错误。

应该是:

org_list[i] = interim

:

org_list = interim

谢谢大家。

相关内容

最新更新