私は完全な初心者で、最近はPythonを使うことを学んでいます 私のコードに問題があります。私はリストaddList場合は、アイテムの数をカウントしようとしているし、私は新しいキーを作成し、カウントを更新する場合は、その値のキーが存在する場合は、辞書の値に追加します。 問題は、複数のアイテムがあるリストで、1つのアイテムが複数回カウントされることにつながります。 私の戦略は、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'に反しないのですか? どうすれば修正できますか?私は、コミュニティが私は私の問題
を打破するために全力を試みたとして、私は、言って何を理解してほしい
は私を助けてくれてありがとう。代わりに、カウントをチェックし、setdefault
を使用しての
SyntaxError:不正な入力( 'lst') '、別のエラーが表示されています。 – piyushj
ここではゴールデンルールがあります:ループ内でループしているものを変更しないでください。 –