从变量调用子例程

时间:2018-03-02 19:14:25

标签: python-3.x subroutine

我试图在python中制作文本游戏,主要是通过CMD线探索假硬盘。我尝试将不同的子文件夹保存在代码中作为不同的子例程。长话短说我试图让它可以调用变量名的子程序?有谁知道这在python 3.6.3中是否可行? 这是一个展示我的概念的测试程序。 任何人都可以让这个工作吗?

def level1():
    print("you have reached level 1")
def level2():
    print("you have reached level 2")
lvl = int(input("go to level: "))
lvl = str(lvl)
level = str("level"+lvl)
level()

感谢您的帮助, - 回复:)

2 个答案:

答案 0 :(得分:1)

可以做到,但你不想这样做。相反,将您的函数放入列表或字典中并从中调用它们。

levels = { 1 : level1,
           2 : level2 }
lvl = int(input("go to level: "))
levels[lvl]()

答案 1 :(得分:0)

有两种可能性浮现在脑海中:

使用if ... elif .. else

进行简单检查
def level1():
    print("you have reached level 1")
def level2():
    print("you have reached level 2")

while True:
    lvl = input("go to level: ").rstrip()
    if lvl == "1":
        level1()
    elif lvl == "2":
        level2()
    else: 
        print("Back to root")
        break

第二个使用eval() - 这很危险。您可以输入arbritary python代码,它将工作(或崩溃)程序:

while True:
    lvl = input("go to level: ").rstrip()
    try:
        eval("level{0}()".format(lvl))
    except: # catch all - bad form
        print("No way out!")

阅读:What does Python's eval() do?