python - Python switch case,多值
问题描述
如何在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
键有两个值,例如这样
main_menus = {
'1' : func1, func4
'2' : func2, func3
}
所以,如果用户输入'1'
,它将func1
首先执行,完成后,它将执行func4
..我不能这样调用func4
:func1
def func1():
return func4()
因为func1
, 可能会被另一个main_menus
键使用,并且会与func3
..配对
如果可以的话,任何人都有解决方案,最好不要使用 for 循环。
谢谢
解决方案
选项 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——使用 For 循环
替换 main_menus 并尝试在上面的整体代码中使用:
main_menus = {
'1' : [func1, func2],
'2' : [func2, func3, func4]
}
try:
for f in main_menus[choice]:
f()
推荐阅读
- python-3.x - 无法使用 pip3 或 Pip 下载 dlib
- angular - 提交后反应表单红色
- android - 为什么我的 android 应用程序在 google play store 上上线的时间太长(现在快一周了)?
- list - Flutter ListView 改变值
- reactjs - 调整 Create-React-App 中的代理设置以绕过 CORS 阻塞错误,现在得到未定义的响应
- stylelint - stylelint 是否有检测未知值的规则?
- python - 无法解析导入“blocktunes” Pylance 报告缺少导入
- javascript - 为什么带有多个 == where 条件的查询不返回数据?
- python - 如何从 BS4 函数的返回中调用所有“p”项?
- grpc - 服务状态 gRPC