如何修复TypeError:'file'对象不可下标访问

4 投票
2 回答
1593 浏览
提问于 2025-04-17 16:27

我对Python还不是很熟悉,不太明白我遇到的问题,非常感谢大家的帮助。总之,这就是我写的代码。

def Banker(warrior):
    gold = open(chairs[warrior-1], "strength")
    return gold

这是我收到的错误信息。

line 22, in Banker
    gold = open(chairs[warrior-1], "strength")
TypeError: 'file' object is unsubscriptable

http://pastebin.com/1wMbaSYY

2 个回答

0

找到了你的问题。第58行是导致你困扰的地方。这里是那一行:

chances, chairs, insurance, km, tire = toyota()

这行本身没有问题,但当我们看看 toyota() 的返回语句时,就出现了问题。这里是 toyota() 的返回语句:

return chances, Tire, Km, Insurance, chairs

问题在于,在Python中返回多个值时,顺序是很重要的,而你返回的顺序和你赋值的顺序不一致。

你在这里返回了 Tire 的值,并把它赋值给了变量 chairs。后来,当你在 Banker 函数中尝试使用 chairs 时,你并没有在使用你想象中的那个对象。

gold = open(chairs[warrior-1], "strength")

在这里,运行 type(chairs) 会返回 File,而不是 list,因为 toyota() 的值是以错误的顺序返回和赋值的。File 类型的对象是不能被索引的,这就是导致你的程序出错的原因。

0

看起来在你的pastebin链接中,第19行的toyota()函数里,你有:

return chances, Tire, Km, Insurance, chairs

这个函数返回了所有这些值,结果是一个元组(即使没有括号也没关系)。但是,这个函数在第58行被调用:

chances, chairs, insurance, km, tire = toyota()

这行代码把返回的元组中的值按顺序赋给左边的变量。这里的元组应该是按正确的顺序来的。在这里,你把Tire的值当成了chairs

撰写回答