从字典中调用程序中的函数

时间:2017-04-19 14:42:03

标签: python python-2.7 function dictionary

我正在学习Python,从2.7开始并使用字典,想要在调用密钥时在我的程序中执行一个函数。在网上看了很多,但要么不相关,要么可能只是不理解。以下是我在使用我最喜欢的游戏之一时开始做的概念。

以下是我目前所处位置的更准确的表示:

myDict = {
    'descript': "This is some text to be printed",
    'NORTH': northOfHouse (not sure if this is correct format)
    }

def westOfHouse():

    print myDict['descript]

    if action == ('n' or 'north'):
        myDict['NORTH]() (Not sure about proper format)
    else:
        print "there is no path in that direction

在使用字典(例如打印字符串,修改值等)时,我已经掌握了基本的东西......只是没有得到如何使函数执行。

1 个答案:

答案 0 :(得分:1)

作为您尝试做的简单演示,请查看以下内容:

def northOfHouse():
    print "north"
    action = raw_input()
    myDict[action]()
def westOfHouse():
    print "west"
    action = raw_input()
    myDict[action]()

myDict = {
    "WEST": westOfHouse,
    "NORTH": northOfHouse
}

action = raw_input()
myDict[action]()

首先,我定义了2个函数(northOfHousewestOfHouse)。这些功能中的每一个都只是在那里打印位置并要求新的输入。然后,他们将尝试在dictonary中调用给定输入的函数。

接下来我定义字典,在我的情况下使用键"WEST""NORTH"引用正确的功能(注意我没有调用函数)。然后可以使用您期望的相应myDict["WEST"]()myDict["NORTH"]()来调用这些内容。

使用它可以输入"NORTH""WEST"并查看正在调用的相应函数,这显然可以扩展到您想要做的事情(包含适当的输入)验证并在循环的基础上执行这些指令,而不是像提供的代码一样递归,递归深度错误将在很长时间后困扰你。)

我建议的另一件事是从每个函数返回一个字典,这样当前位置决定了你可以移动到下一个的位置:

def northOfHouse():
    print "You're in the NORTH of the house\nYou can go 'WEST'"
    myDict = {
        "WEST": westOfHouse
    }
    return myDict

def westOfHouse():
    print "You're in the WEST of the house\nYou can go 'NORTH'"
    myDict = {
        "NORTH": northOfHouse
    }
    return myDict

currentMoves = northOfHouse()
while 1:
    action = raw_input()
    if(action in currentMoves):
        currentMoves = currentMoves[action]()
    else:
        print "Invalid Input"

Try Here on repl.it