You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python作业报'int is not subscriptable'错误,课程分数排序代码如何修复?

问题排查与解决

报错原因

你的代码有两个核心错误直接触发该类型报错:

  • 循环变量重名:内外两层for循环都使用了变量i,内层循环运行时会覆盖外层i的取值,直接打乱外层循环的执行逻辑。
  • 排序交换逻辑错误:原代码中org_list = interim这行,直接把存储全部学生数据的嵌套列表替换成了单个学生的子列表,下一轮外层循环执行org_list[i][index]时,相当于对整数类型的成绩值取下标,自然会触发'int'对象不可取下标的报错。

修正后代码

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
else:
    print("输入的课程名称不存在")
    exit()

# 选择排序逻辑修正
for i in range(len(org_list)):
    best = org_list[i][index]
    best_loc = i
    # 内层循环换用不同变量名避免冲突
    for j in range(i+1, len(org_list)):
        if best < org_list[j][index]:
            best = org_list[j][index]
            best_loc = j
    # 正确交换两个元素的位置,不修改整个org_list
    org_list[i], org_list[best_loc] = org_list[best_loc], org_list[i]

# 输出排序后的学生姓名
for item in org_list:
    print(item[0])

测试验证

输入MAT110时,输出顺序为:

Alan
Musk
Turing
Elon

完全符合题目要求。

内容的提问来源于stack exchange,提问作者Irrelevant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:45:00