2014-10-19 2 views
0
inventory = { 
    'gold' : 500, 
    'sack' : ['rock', 'copper wire'], 
    'weapons rack' : ['pistol', 'MP-5', 'grenade'], 
    'ammo pouch' : ['Pistol ammo', 'MP-5 ammo'], 
} 

print "You have " + inventory['gold'][0] + " coins!" 

Я получаю сообщение об ошибке:Кодирование в Python, команда печати не действует, как ожидалось

line 8, in <module> 
    print "You have " + inventory['gold'] + " coins!" 
TypeError: 'int' object has no attribute '__getitem__' 

почему бы не консоль распечатывают "You have 500 gold coins!"

ответ

2

Ваш gold запись не список; вы пытаетесь проиндексировать целое число 500. Удалите [0]:

print "You have", inventory['gold'], "coins!" 

Обратите внимание, что я использовал запятые, не +, потому что вы не можете просто конкатенации строк и целых чисел, как это. Альтернативой было бы преобразовать целое число в строку первой:

print "You have " + str(inventory['gold']) + " coins!" 

Вы также можете поставить значение золота в списке:

inventory = { 
    'gold' : [500], 
    'sack' : ['rock', 'copper wire'], 
    'weapons rack' : ['pistol', 'MP-5', 'grenade'], 
    'ammo pouch' : ['Pistol ammo', 'MP-5 ammo'], 
} 

Обратите внимание на [...] квадратные скобки вокруг значения 500 там. Затем снова применяются ваши [0]:

print "You have", inventory['gold'][0], "coins!" 
Смежные вопросы