文本冒险游戏基于字典的库存功能实现问题求助
解决文本冒险游戏库存系统的实现问题
首先你当前的库存字典写法存在语法错误,Python字典要求键值成对存在,正确的结构应该调整为每个物品对应包含count的子字典:
inventory = { 'Holzbretter': {'count': 0}, 'Goldmünzen': {'count': 5}, 'Karte von Shipwreck-Beach': {'count': 0} }
接下来针对你遇到的两个问题,给出解决方案:
核心思路
先筛选出所有count > 0的物品,再根据筛选结果决定输出内容:
- 若筛选结果不为空,按要求格式打印带索引的物品列表
- 若筛选结果为空,仅打印一次空库存提示
完整代码实现
# 修正后的库存字典 inventory = { 'Holzbretter': {'count': 0}, 'Goldmünzen': {'count': 5}, 'Karte von Shipwreck-Beach': {'count': 0} } # 筛选出count>0的物品,同时保留物品名称 available_items = [(item_name, details['count']) for item_name, details in inventory.items() if details['count'] > 0] if available_items: # 遍历带索引打印,索引从1开始 for idx, (item, count) in enumerate(available_items, start=1): print(f"[{idx}] {item}: {count}") else: print("Your inventory is empty!")
代码说明
- 用列表推导式一次性筛选出所有有数量的物品,避免循环中重复判断空库存
enumerate(..., start=1)直接生成从1开始的索引,匹配你需要的格式- 仅在
available_items为空时打印一次空提示,彻底解决重复打印的问题
内容的提问来源于stack exchange,提问作者IsItMe
相关产品推荐
相关产品推荐

