在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
相关产品推荐
相关产品推荐

