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

Python文本类游戏房间移动功能失效及字典操作求助

针对Camp Crystal Lake文本游戏的问题排查与修复建议

1. 先确认房间字典的结构

确保你的房间字典是嵌套字典结构,每个房间作为键,对应的值包含该房间的描述、可移动方向及目标房间,示例:

rooms = {
    "main_camp": {
        "description": "你站在水晶湖营地的主广场,周围是破旧的木屋。",
        "north": "lake_shore",
        "east": "mess_hall"
    },
    "lake_shore": {
        "description": "湖水泛着诡异的波纹,岸边散落着生锈的鱼钩。",
        "south": "main_camp"
    }
}

如果字典结构错误(比如值不是字典、键名拼写不一致),会直接导致取值失败。

2. 检查移动逻辑的类型匹配问题

TypeError常出现在使用错误类型的键访问字典,比如:

  • 误用整数而非字符串作为键(比如rooms[1]但字典键是"main_camp")
  • 移动输入处理时,未将用户输入转为正确类型(比如用户输入"north",代码里误存为变量north而非字符串"north")

示例正确的移动逻辑片段:

current_room = "main_camp"
while True:
    print("\n" + rooms[current_room]["description"])
    move = input("往哪个方向移动?(north/east/south/west): ").lower()
    # 检查输入的方向是否在当前房间的可移动列表中
    if move in rooms[current_room]:
        current_room = rooms[current_room][move]
    else:
        print("你不能往这个方向走!")

3. 定位TypeError的具体触发点

把完整错误信息贴出来可以精准定位问题:

  • 若为TypeError: 'str' object is not subscriptable:说明你试图对字符串做字典式取值,大概率是房间字典的结构错误(比如某个房间对应的值是字符串而非字典)。
  • 若为TypeError: unhashable type: 'list':说明你用了列表作为字典的键,字典键必须是可哈希类型(字符串、整数、元组等)。

4. 快速调试技巧

在关键位置加打印语句,确认变量类型和值:

print(f"当前房间:{current_room},类型:{type(current_room)}")
print(f"当前房间的字典内容:{rooms[current_room]},类型:{type(rooms[current_room])}")

能快速排查是键的问题,还是字典值的结构问题。


内容的提问来源于stack exchange,提问作者Jennifer Valenti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:15:50