我在这个程序的第二个函数上遇到了一点问题,所以我从网上(reddit)找到了一些提示。我不太喜欢,但现在似乎想不出更好的办法。
“编写一个名为addToInventory(inventory,addedItems)的函数,其中inventory参数是一个字典,表示玩家的inventory(就像在上一个项目中一样),addedItems参数是一个类似于dragonLoot的列表。函数的作用是:返回一个字典来表示更新的库存。请注意,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箭头 一把匕首 项目总数:62 库存: 1根绳子 42金币 一把匕首 0红宝石 项目总数:48
所以,照原样,只要印1枚红宝石和45枚金币就行了。它做加法,但印0红宝石和保持在42金币。如果有人有更好的方法来编写第二个函数,我非常希望看到它,因为我对这个函数一点也不满意。
您的
displayInventory
函数再次直接在stuff
中查找当前值,这不是以前更新的清单。我不知道你为什么要这么做,因为你在循环中有这个值,但是忽略它。你应该用这个值。
相关问题 更多 >
编程相关推荐