私はこのプログラムの2番目の機能に少し問題があったので、オンラインで(redditで)見つけたものからいくつかのヒントを取りました。私はそれが大好きではありませんが、今はもっと良い方法を考えているようです。退屈なものを自動化する、第5章練習プロジェクト
"inventoryパラメータがプレーヤーのインベントリを表す辞書(以前のプロジェクトのような)であり、addedItemsパラメータがdragonLootのようなリストであるaddToInventory(inventory、addedItems)という関数を記述します。 。。更新されたインベントリを表した辞書を返すaddedItemsリストは、同じ項目の倍数が含まれていることに注意してください」
ここで私が持っているものです。
stuff = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
def displayInventory(inventory): # This function is correct.
print("Inventory:")
item_total = 0
for k, v in inventory.items():
item_total = item_total + v
print(str(stuff.get(k, 0)) + ' ' + k)
print("Total number of items: " + str(item_total))
displayInventory(stuff)
def addToInventory(inventory, addedItems):
for i in range(len(addedItems)):
inv.setdefault(addedItems[i], 0)
inv[addedItems[i]] = inv[addedItems[i]] + 1
return inv
inv = {'gold coin': 42, 'rope': 1}
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
inv = addToInventory(inv, dragonLoot)
displayInventory(inv)
電流出力:
インベントリ: 1ロープ 42金貨 6トーチ 12矢印 1短剣アイテムの 総数:62 インベントリ: 1ロープ 42金貨 1短剣 0ルビアイテムの 総数:48
それで、そのままルビー1枚と金貨45枚を印刷するだけです。それは追加を行いますが、0ルビーを印刷し、42金貨にとどまります。もし誰かがこの2番目の関数を書く良い方法を持っていれば、私はこの記事のすべての内容ではないので、それを見たいと思っています。
あなたの 'addToInventory'関数が' addedItems'引数を受け入れる理由はわかりませんが、すぐにそれをグローバル 'dragonLoot'値で上書きします。 –
申し訳ありません私はそれで他の何かをしようとしていた私はそれを残して、私は正しく投稿します。 – ubundows