3 回答
TA贡献1827条经验 获得超4个赞
至少一本字典是正确的答案。您要设置它的方法至少是按名称索引:
def roomSetup():
roomsfile = "roomsfile.txt"
infile = open(roomsfile, 'r')
rooms = {}
for line in infile:
newroom = makeRooms(line)
rooms[newroom.roomName] = newroom
infile.close()
return rooms
然后,给定名称,您可以直接访问Rooms实例:
exits = rooms['bedroom'].roomExits
我没有使用您的getRoomName和getRoomExits方法是有原因的-在Python中不需要getter和setter方法。您可以直接直接跟踪实例数据,如果以后需要更改实现,则可以将其重构为属性。它为您提供了getter和setter的所有灵活性,而无需事先准备好样板代码。
根据定义文件中存在的信息以及您的需求,您可能会更加幻想-例如,我可能希望将出口信息存储在字典中,该字典映射每个出口的规范名称(可能以'east开始”,“西”,“北”和“南”,并根据需要扩展到诸如“上”,“下”和“丹尼斯”之类的内容),以得到描述更长的元组和相关的Rooms实例。
我还将命名为“房间”而不是“房间”,但这是样式问题,而不是重要的行为。
TA贡献1848条经验 获得超6个赞
您可以in用来检查成员资格(从字面上看,如果容器中有东西)。这适用于列表,字符串和其他可迭代项。
>>> li = ['a','b','c']
>>> 'a' in li
True
>>> 'x' in li
False
TA贡献1865条经验 获得超7个赞
阅读完房间后,您可以创建字典:
rooms = roomSetup()
exits_of_each_room = {}
for room in rooms:
exits_of_each_room[room.getRoomName()] = room.getRoomExits()
然后,您的功能很简单:
def printRoomExits(exits_of_each_room, noun):
print exits_of_each_room[noun]
添加回答
举报