Python开关案例,多值
如何在python字典中执行多值Python开关案例,多值,python,python-3.x,Python,Python 3.x,如何在python字典中执行多值 def func1(): pass def func2(): pass def func3(): pass def func4(): def main_menu(): os.system('clear') print("\nWelcome, \n\n") print("1. First Question") print("2. Second Question") print("\n\n Type
def func1():
pass
def func2():
pass
def func3():
pass
def func4():
def main_menu():
os.system('clear')
print("\nWelcome, \n\n")
print("1. First Question")
print("2. Second Question")
print("\n\n Type 'q' for Quit\n")
choice = input(" >> ").lower()
if choice == '':
main_menu()
else:
try:
main_menus[choice]()
except KeyError:
print("Invalid selection, Please try again.\n")
main_menu()
return
main_menus = {
'1' : func1,
'2' : func2,
}
我希望主菜单
键有两个值,例如
main_menus = {
'1' : func1, func4
'2' : func2, func3
}
因此,如果用户输入'1'
,它将首先执行func1
,完成后,它将执行func4
。。
我不能像这样从func1
调用func4
:
def func1():
return func4()
由于func1
,可能会被另一个主菜单
键使用,并与func3
配对
任何人对此都有解决方案,如果可以,最好不要使用for循环
谢谢您使用Eval选项1
main_menus = {
'1' : "func1(), func2()",
'2' : "func2(), func3(),func4()"
}
try:
eval(main_menus[choice])
总体代码变为:
import os
def func1():
pass
def func2():
pass
def func3():
pass
def func4():
pass
def main_menu():
choice = ''
while True:
os.system('clear')
print("\nWelcome, \n\n")
print("1. First Question")
print("2. Second Question")
print("\n\n Type 'q' for Quit\n")
choice = input(" >> ").lower()
if choice != 'q':
try:
eval(main_menus[choice])
except KeyError:
print("Invalid selection, Please try again.\n")
else:
break
return
main_menus = {
'1' : "func1(), func2()",
'2' : "func2(), func3(),func4()"
}
main_menu()
选项2——用于循环
用以下代码替换上面的主菜单并重试:
main_menus = {
'1' : [func1, func2],
'2' : [func2, func3, func4]
}
try:
for f in main_menus[choice]:
f()
只需定义一个同时调用它们的函数
def func12():
func1()
func2()
def func34():
func3()
func4()
main_menus = {
'1': func12,
'2': func34
}
看看这个:是的,我以前试过这个,它可以..但是也许有另一种没有for循环的方法,因为我在那个字典里有很多
键
。@Fixlensmith--更新了使用eval的选项,尽管我不理解你关于for循环的问题。你能进一步解释吗?我只是想知道是否有其他方法,我只是想比较for循环和其他选项之间的速度。