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

Python文本游戏Get命令故障:无法将房间物品加入角色库存

Python文本游戏物品拾取问题排查与解决

问题现象

  • 房间能正常显示物品,但执行Get [item]命令时,系统提示物品不存在,无法将物品添加到角色库存
  • 测试输出示例:
You are in the Northeast Wing
Your Inventory: []
You see the Necklace of Ethereal Inhabitance
Enter your command:Get Necklace of Ethereal Inhabitance
This room doesn't have the Necklace Of Ethereal Inhabitance

核心排查方向与解决方法

1. 大小写不匹配(最可能的原因)

从错误提示可见,输入的物品名是Necklace of Ethereal Inhabitance,但提示中物品名的第二个单词变成了Of(首字母大写),说明代码中做了严格大小写比对,导致匹配失败。
解决方式:比对时统一转为小写(或大写),消除大小写差异:

# 示例处理逻辑
user_input = input("Enter your command:").strip()
inventory = []
# 假设当前房间的物品列表
current_room_items = ["Necklace of Ethereal Inhabitance"]

if user_input.lower().startswith("get "):
    target_item = user_input[4:].strip()
    # 统一转为小写进行比对
    target_lower = target_item.lower()
    for idx, item in enumerate(current_room_items):
        if item.lower() == target_lower:
            # 添加到库存
            inventory.append(item)
            # 从房间移除物品
            del current_room_items[idx]
            print(f"You picked up the {item}")
            break
    else:
        print(f"This room doesn't have the {target_item}")

2. 命令解析不完整

如果代码用split()拆分Get命令,会把多单词的物品名拆成多个片段,导致只提取了第一个单词(比如只取了Necklace,而非完整名称)。
解决方式:提取Get 之后的全部字符串作为物品名:

# 正确提取物品名
if command.lower().startswith("get "):
    item_name = command[len("get "):].strip()  # 取"get "之后的所有内容

3. 物品存储结构错误

检查房间对象的物品属性是否一致:比如显示物品时读取的是current_room.items,但拾取逻辑中误访问了其他属性(如current_room.inventory),导致读取的物品列表为空或错误。

4. 字符串格式差异

房间存储的物品名可能带有额外空格、换行符,或者用户输入时多打/漏打了空格。解决方式:比对前对双方字符串做标准化处理:

# 标准化处理:去除首尾空格,替换多空格为单个空格
def normalize_string(s):
    return ' '.join(s.strip().split())

target_normalized = normalize_string(target_item)
for item in current_room_items:
    if normalize_string(item) == target_normalized:
        # 执行拾取逻辑
        pass

内容的提问来源于stack exchange,提问作者Jon Rinehimer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:13:21