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

Python文本类房间移动游戏出现KeyError('Living room')问题求助

KeyError问题原因及解决方法

问题原因

出现KeyError: 'Living room'的核心原因是房间名称的大小写/拼写不一致:

  • rooms字典中,房间键是'Living Room'(Room首字母大写),但Dining Room的South方向指向的是'Living room'(room首字母小写)。
  • 当从Dining Room往南移动时,current_room被设置为'Living room',但这个名称在rooms字典中不存在,访问rooms[current_room]时直接触发KeyError。
  • 代码里还有其他类似的不一致问题:
    • Master Bedroom和Master bedroom(Kitchen的West方向)
    • Secret Room和Secret room(Dungeon的East方向)

解决方法

统一所有房间名称的拼写和大小写,确保所有方向指向的房间名称与rooms字典中的键完全匹配。修改后的rooms字典如下:

rooms = {
        'Entrance room': {'East': 'Master Bedroom'},
        'Master Bedroom': {'North': 'Family room'},
        'Family room': {'East': 'Dining Room', 'South': 'Master Bedroom'},
        'Dining Room': {'South': 'Living Room', 'West': 'Family room'},  # 修正Living room为Living Room
        'Living Room': {'South': 'Kitchen'},
        'Kitchen': {'South': 'Secret Room', 'West': 'Master Bedroom'},  # 修正Secret room为Secret Room,Master bedroom为Master Bedroom
        'Secret Room': {'West': 'Dungeon', 'North': 'Kitchen'},
        'Dungeon': {'East': 'Secret Room'}  # 修正Secret room为Secret Room
}

额外建议

为避免这类问题重复出现,可以:

  • 用常量定义房间名称,比如LIVING_ROOM = 'Living Room',所有引用都使用常量,减少手动拼写错误。
  • 移动时增加目标房间存在性检查,比如:
    target_room = rooms[current_room].get(command)
    if target_room and target_room in rooms:
        current_room = target_room
        print(current_room)
    else:
        print('You cant go that way!')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:50:03