如何在python中定义一个函数来选择列表。

时间:2015-03-30 09:16:09

标签: python

我正在尝试定义一个选择列表的函数。我正在写文字冒险。我选择将房间表示为列表,包括描述,怪物等。 现在我想定义一个函数get_room(id)来为我带来合适的房间

Room1=[description1,monster1]  
Room2=[description2,monster2]

我想我可以尝试列出清单并从中挑出合适的房间。但这不会慢吗? 我是编程的新手,所以我更愿意,如果解决方案不涉及类,如果可能的话。我使用的是python 2.7.2。

3 个答案:

答案 0 :(得分:2)

您可以像这样使用dictionary

dict = {
        'Room1' : ['description1','monster1'],
        'Room2' : ['description2','monster2']
       }

而不是称他们为:

print dict['Room1']

答案 1 :(得分:2)

在我看来,您可以将您的房间声明为一个独特的变量:

valid_rooms = [['description1', 'monster1'],
['description2', 'monster2']]

因此操作它们变得更容易。 获取用户所需位置空间的示例:

var = raw_input("Please enter room number: ")
print("you entered"), var
selectedRoom = int(var)
print( "room index %d : %s" % (selectedRoom, valid_rooms[selectedRoom]))

重要:我强烈建议您测试用户输入的int转换:

try:
    myint = int(var)
except ValueError:
    print("Sorry you do not enter a valid INTEGER!")

备注:在建议的场景中,函数get_room()会非常简单(可能不那么有用)

def get_room(id):
  return valid_rooms[id]

注意在python 3.x raw_input中重命名为input

答案 2 :(得分:0)

如果您的房间ID是整数,则应使用列表。

rooms = [Room1, Room2]

# I assume you want to assign your rooms a number from 1 to ...
def get_room(id):
    return rooms[id - 1]

如果您的房间不是整数,但是,例如,您应该使用dictionary字符串。

rooms = {
    "room1": Room1,
    "room2": Room2
}

def get_room(id):
   return rooms[id]

在这两种情况下,无论何时使用字典或列表,都应该假设对元素的访问速度非常快。它是常量时间,这意味着每当字典/列表具有10,100或100000个元素时,从中选择元素将花费相同的时间。