Python 3跳转表

时间:2018-11-19 19:37:20

标签: python-3.x

我试图弄清楚如何创建基本的跳转表,因此我可以更好地理解在Python 3.5.6中创建菜单的不同方法。这是我到目前为止的内容:

def command():
    selection = input("Please enter your selection: ")
    return selection

def one():
    print ("you have selected menu option one")

def two():
    print ("you have selected menu option two")

def three():
    print ("you have selected menu option three")

def runCommand(command):
    jumpTable = 0
    jumpTable[command]()
    jumpTable = {}
    jumpTable['1'] = one
    jumpTable['2'] = two
    jumpTable['3'] = three

def main():
    command()
    runCommand(command)

if __name__ == "__main__":
    main()

据我了解,跳转表只是一种选择菜单并调用与该数值相关联的特定功能的方式,该功能由我的“命令”功能接受。在jumpTable中,您可以分配要调用的函数。

在runCommandjumpTableone中,我在第16行获得了“文件”被省略的信息 TypeError:“ int”对象不可下标

我要做的就是让用户输入数字-1、2或3并运行该功能。当我禁用此基本功能时,将展开菜单以显示选项并更加清晰。我只需要让该死的东西就可以运行!

是的,我知道其他创建菜单的方式(IF / ELIF / ELSE),我只是想将其固定下来!

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您非常亲密。唯一的问题是您在创建jumpTable之前尝试访问该命令。而且我也不确定为什么首先要将变量设置为0(这就是为什么得到int不是下标错误)的原因。因此,这是正确的顺序:

def runCommand(command):
    jumpTable = {}
    jumpTable['1'] = one
    jumpTable['2'] = two
    jumpTable['3'] = three
    jumpTable[command]()

顺便说一句,如果您始终创建相同的jumpTable,则可以在函数外部创建一次,只需在jumpTable[command]()函数中调用main

另一个问题:您应该存储从用户那里获得的值,并将其传递给下一个函数,如下所示:

cmd = command()
runCommand(cmd)

,或者简单地pipe将两个函数像这样:

runCommand(command())