如何修复TypeError:'file'对象不可下标访问
我对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
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
。