You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《Python编程快速上手》奇幻游戏库存函数输出问题求助

解决奇幻游戏库存的列表转字典问题

嘿,我懂你卡在这道题的纠结——当初啃这本书的时候,我也对着这个函数琢磨了好一会儿!咱们一步步把它搞定。

首先先把需求再明确下:

编写名为addToInventory(inventory, addedItems)的函数,inventory参数是代表玩家库存的字典(比如{'gold coin': 42, 'rope': 1}),addedItems是像dragonLoot这样的字符串战利品列表,需要把列表里的物品添加到库存字典中:重复物品就增加对应计数,新物品则直接添加键值对。

完整实现代码

def addToInventory(inventory, addedItems):
    # 遍历战利品列表里的每一件物品
    for item in addedItems:
        # 物品已在库存中,计数+1
        if item in inventory:
            inventory[item] += 1
        # 物品不在库存,新增条目并设计数为1
        else:
            inventory[item] = 1
    # 返回更新后的库存字典
    return inventory

# 测试用例
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
playerInventory = {'gold coin': 42, 'rope': 1}
updatedInventory = addToInventory(playerInventory, dragonLoot)

# 附赠一个打印库存的辅助函数,方便查看结果
def displayInventory(inventory):
    print("Inventory:")
    total_items = 0
    for item, count in inventory.items():
        print(f"{count} {item}")
        total_items += count
    print(f"Total number of items: {total_items}")

displayInventory(updatedInventory)

代码逻辑拆解

  • 遍历战利品列表:逐个处理每一件从巨龙那拿到的战利品
  • 判断库存存在性:用if item in inventory检查物品是否已在库存,存在就累加计数,不存在就新增键值对
  • 返回更新后的库存:确保调用函数后能拿到最新的玩家库存

运行结果

执行代码后会输出:

Inventory:
45 gold coin
1 rope
1 dagger
1 ruby
Total number of items: 48

更简洁的写法(进阶小技巧)

其实可以用字典的get()方法省略掉if-else判断,一行搞定计数更新:

def addToInventory(inventory, addedItems):
    for item in addedItems:
        # get()方法:存在则返回对应值,不存在返回默认值0,再加1
        inventory[item] = inventory.get(item, 0) + 1
    return inventory

内容的提问来源于stack exchange,提问作者Ajay Sundaresan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:55:25