从变量调用子程序
Calling subroutines from a variable
我正在尝试在 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()
感谢您的帮助,
-里斯 :)
可以做到,但你不想那样做。相反,将您的函数放入列表或字典中并从中调用它们。
levels = { 1 : level1,
2 : level2 }
lvl = int(input("go to level: "))
levels[lvl]()
想到两种可能性:
简单检查 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()
- 这很危险。您可以输入任意 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?
我正在尝试在 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()
感谢您的帮助, -里斯 :)
可以做到,但你不想那样做。相反,将您的函数放入列表或字典中并从中调用它们。
levels = { 1 : level1,
2 : level2 }
lvl = int(input("go to level: "))
levels[lvl]()
想到两种可能性:
简单检查 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()
- 这很危险。您可以输入任意 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?