Я полный новичок и недавно научился использовать python У меня проблема с моим кодом. Я пытаюсь подсчитать количество элементов, если список добавилList, а затем добавить его в значение в словаре, если ключ для этого значения существует, если я не создаю новый ключ и не обновляю счет. Проблема в том, что в списке, где есть более одного элемента, это может привести к тому, что один элемент будет посчитан более одного раза. Моя стратегия заключалась в том, чтобы использовать метод remove для удаления элемента из списка. Я полагал, что это предотвратит подсчет элемента более одного раза.Почему мой цикл for игнорирует элемент?
Однако, когда я запускаю код, он. Я получаю сообщение об ошибке: IndexEror: index out of range
def addToInventory(inventory, addedItems):
lst = list(addedItems)
for item in range(0, len(addedItems)-1):
count = lst.count(lst[item])
if addedItems[item] in inventory:
inventory[lst[item]] += count
if count > 1:
for i in range(0, count):
word = lst[item]
addedItems.remove(word)
else:
inventory.setdefault(lst[item], count)
inv = {'gold coin': 42, 'rope': 1}
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
inv = addToInventory(inv, dragonLoot)
displayInventory(inv)
Я узнал, что после того, как я удаляю все предметы золотой монеты. Я успешно могу добавить «кинжал» в словарь, но не «рубин».
Я хочу, чтобы кто-то объяснил мне
Почему цикл for не подходит для «рубинов»? Как это исправить?
Я надеюсь, что сообщество понять, что я говорю, как я старался изо всех сил, чтобы сломать мою проблему
спасибо за помощь.
Я получаю еще одну ошибку 'SyntaxError: bad input ('lst')', вы уверены, что это код? – piyushj
Вот золотое правило: не изменяйте то, что вы зацикливаете внутри цикла. –