Python新手求助:如何实现用户输入添加至inventory字典功能
修正后的代码及说明
问题分析
你的代码存在几个关键问题:执行顺序错误、库存更新逻辑不当、缺少循环输入逻辑、退出条件判断错误。以下是修正后的完整代码及解释:
def displayInventory(myInv): print("Inventory:") total = 0 for k, v in myInv.items(): print(f"{v} {k}") # 使用f-string简化输出格式 total += v print(f"Total number of items: {total}") def addToInventory(inventory): while True: item = input("你想添加什么到背包?输入D结束:") # 忽略大小写和首尾空格,判断是否退出输入 if item.strip().upper() == "D": break # 安全更新库存:物品存在则数量+1,不存在则初始化为1 inventory[item] = inventory.get(item, 0) + 1 # 若需要同时将物品添加到dragonLoot列表,取消下方注释 # dragonLoot.append(item) # 先初始化库存和龙战利品列表,再调用函数 inventory = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12} dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby'] # 执行添加物品操作 addToInventory(inventory) # 展示更新后的库存 displayInventory(inventory)
主要修改点
- 调整执行顺序:先定义
inventory和dragonLoot变量,再调用函数,避免名称错误。 - 添加循环输入:通过
while True循环持续询问用户输入,直到用户输入"D"退出。 - 修正库存更新逻辑:使用
inventory.get(item, 0)安全获取物品数量,不存在则返回0,再累加1,避免键不存在的错误。 - 优化退出判断:使用
strip().upper()处理用户输入的大小写和空格问题,提升交互友好性。 - 移除无用参数:删除了被覆盖的
addedItems参数,简化函数结构。
内容的提问来源于stack exchange,提问作者Emily McWilliams
相关产品推荐
相关产品推荐

