我是一個完整的初學者,最近學習使用python 我的代碼有問題。我正在嘗試計算列表的數量,如果列表addedList,然後將其添加到字典中的值,如果該值的關鍵存在,如果沒有我創建一個新的密鑰並更新計數。 問題在於,如果列表中存在多個項目,則可能會導致一個項目不止一次計數。 我的策略是使用remove方法從列表中刪除項目。 我相信這樣可以防止物品被計入多次。爲什麼我的for循環忽略一個項目?
但是,當我運行代碼它。我收到一個錯誤:IndexEror:索引超出範圍
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循環無法調整爲'ruby'? 我該如何解決它?
我希望社會明白我在說什麼,因爲我盡力打破我的問題
謝謝你對我的幫助。
我得到另一個錯誤'SyntaxError:壞輸入('lst')',你確定這是代碼? – piyushj
這是一條黃金法則:不要修改循環內循環的東西。 –