2013-02-20 20 views
3

我有點新來python,真的不明白我的問題,真的很感謝幫助。無論如何,這是編碼的路線。如何修復TypeError:'file'對象是無法編碼的

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

+0

您可以將整個代碼發佈到[Pastebin](http://pastebin.com/)並編輯您的文章以包含鏈接嗎? – 2013-02-20 01:51:26

+0

你是否重寫了內置'open'函數? – Aesthete 2013-02-20 01:54:25

+1

謝謝詹姆斯,我剛剛做到了,我不知道Esthete。 – 2013-02-20 01:55:22

回答

0

看起來像你的引擎收錄鏈接,在第19行,在toyota()您有:

return chances, Tire, Km, Insurance, chairs 

它返回一個元組(即使沒有括號)所有這些值。但是,這就是所謂的第58行:

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

其中以在左側給出的變量分配從返回的元組的值。這些元組應該按照正確的順序。在這裏,您使用Tire的值作爲chairs

+0

謝謝,感謝! – 2013-02-20 02:12:05

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 s不能被索引,這就是你的程序拋出錯誤的原因。

+0

非常感謝 – 2013-02-20 02:06:59