Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python开关案例,多值_Python_Python 3.x - Fatal编程技术网

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

如何在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 '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循环和其他选项之间的速度。