2013-02-20 6 views
3

Im kinda new to 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/) и отредактировать свое сообщение, чтобы включить ссылку, пожалуйста? –

+0

Вы переопределили встроенную функцию 'open'? – Aesthete

+1

Спасибо, Джеймс, я просто сделал это, и я не уверен Esthete. –

ответ

0

Похоже на ссылку Pastebin, в строке 19, в toyota() у вас есть:

return chances, Tire, Km, Insurance, chairs 

, который возвращает все эти значения в кортеж (даже без скобок). Но это называется в строке 58:

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

задающего значение из возвращенного кортежа, чтобы к переменным заданным на левой стороне. Эти кортежи должны быть в правильном порядке. Здесь вы используете значение Tire как chairs.

+0

Спасибо, оцените! –

0

Нашли свою проблему. Строка 58 - это то, что вызывает у вас проблемы. Здесь есть:

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

Ничего плохого в этом, но когда мы смотрим на toyota() сек оператора возврата, есть проблема. Вот toyota() сек оператор возврата:

return chances, Tire, Km, Insurance, chairs 

Проблема возникает из-за того, что порядок имеет значение, когда возвращающиеся несколько значений в Python, и порядок, в котором вы возвращаетесь и порядок, в котором вы назначите не совпасть.

Здесь вы возвращаете значение Tire и присваиваете его переменной chairs. Позже, когда вы пытаетесь использовать chairs в функции Banker, вы не работаете с объектом, который, как вы думаете.

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

Здесь работает type(chairs) вернется File, не list, потому что toyota() сек значения были возвращены/назначены в неправильном порядке. File s не может быть проиндексирован, и это то, что заставляет вашу программу выкидывать ошибку.

+0

Большое спасибо –

Смежные вопросы