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

在Codecademy编写Python代码时遭遇TypeError:'built_in_function_or_method' object is not subscriptable错误求助

问题分析与解决方案

首先看你遇到的错误:

TypeError: 'built_in_function_or_method' object is not subscriptable

这个错误的直接原因是你错误地用方括号[]去操作remove方法——remove是列表的内置方法,属于函数/方法对象,不能用下标[2]来索引它,而且调用方法必须用圆括号()。

再看你代码里的明显问题:

  • gradebook.remove2是完全无效的语法,结合你错误提示里的gradebook.remove[2](85),推测你想移除索引为2的元素(也就是["poetry", 85]),但remove()方法的参数是要移除的元素本身,不是索引;如果要按索引移除元素,应该用list.pop(index)方法。
  • gradebook.append4同样是无效语法,估计你是想添加修改后的诗歌成绩项?

修正后的完整代码

假设你是想替换掉原来的诗歌成绩项,这里给你修正后的代码(保留你原本的逻辑,只修复错误部分):

last_semester_gradebook = [["politics", 80], ["latin", 96], ["dance", 97], ["architecture", 65]]
# Your code below:
subjects = ["physics", "calculus", "poetry", "history"]
grades = [98, 97, 85, 88]
gradebook = [["physics", 98], ["calculus", 97], ["poetry", 85], ["history", 88]]
print(gradebook)
gradebook.append(["computer science", 100])
gradebook.append(["visual arts", 93])
print(gradebook)
gradebook[-1][-1] = 98  # 这行逻辑是对的,修改visual arts的成绩为98

# 修复错误:移除索引为2的诗歌成绩项
gradebook.pop(2)
# 添加新的诗歌成绩(这里用90举例,你可以改成自己需要的分数)
gradebook.append(["poetry", 90])

full_gradebook = last_semester_gradebook + gradebook
print(full_gradebook)

关键知识点提醒

  • list.remove(item):传入要移除的元素具体值,会移除列表中第一个匹配该值的元素。
  • list.pop(index):传入索引值,移除对应位置的元素,还可以返回被移除的元素(如果需要使用的话);不传索引默认移除最后一个元素。
  • 所有方法调用必须用圆括号(),方括号[]仅用于访问列表/字典的下标或切片,不能用来调用方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:49:09