Python实现变量值重复赋值检测(文本冒险场景)
实现文本冒险游戏的房间“已熟悉”检测功能
我们可以利用Python的集合来高效跟踪已访问过的房间,快速判断当前房间是否是首次进入。
核心思路
- 用一个集合存储所有已经进入过的房间名称(集合自动去重,且查询效率高)
- 每次切换房间时,先检查目标房间是否在集合内:
- 存在则返回
True(已熟悉,仅显示房间名) - 不存在则返回
False(首次进入,显示完整描述),同时将该房间加入集合
- 存在则返回
代码实现
# 初始化存储已访问房间的集合 visited_rooms = set() def is_familiar_room(room_name): if room_name in visited_rooms: return True visited_rooms.add(room_name) return False # 测试示例 room = "kitchen" print(f"room = '{room}' #{is_familiar_room(room)}") # 输出: room = 'kitchen' #False room = "living room" print(f"room = '{room}' #{is_familiar_room(room)}") # 输出: room = 'living room' #False room = "kitchen" print(f"room = '{room}' #{is_familiar_room(room)}") # 输出: room = 'kitchen' #True room = "living room" print(f"room = '{room}' #{is_familiar_room(room)}") # 输出: room = 'living room' #True room = "dungeon" print(f"room = '{room}' #{is_familiar_room(room)}") # 输出: room = 'dungeon' #False
额外说明
- 集合的
in操作时间复杂度为O(1),比用列表存储(O(n))更适合频繁的房间切换场景 - 你可以把
is_familiar_room函数嵌入到场景切换的逻辑里,根据返回值控制显示内容:比如返回False时打印完整场景描述,返回True时只打印房间名称
内容的提问来源于stack exchange,提问作者OcularBear8
相关产品推荐
相关产品推荐

