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
相关产品推荐
相关产品推荐

