'''
实现功能:做一个三级菜单,根据用户选择显示对应的菜单,可以进入子菜单,也可以返回上一级菜单,可以直接退出
三级菜单格式: 第一级是一个字典
第二级也是一个字典
第三级是列表
例如:{"shabi":{"shabi1":["shabi11","shabi12"],"shabi2":["shabi21","shabi22"]},"caibi":{"caibi1":["caibi11","caibi12"],"caibi2":["caibi21","caibi22"]}}
'''
def showMenu(menu,firstLevelMenu,secondMenu):
'''
根据一级菜单和二级菜单和menu显示对应的菜单选项
:param menu: 总菜单
:param firstLevelMenu: 一级菜单,如果要显示一级菜单,此处为None
:param secondMenu: 二级菜单,如果要显示二级菜单,此处为None
:return: None
'''
if firstLevelMenu==None: #s说明显示的是一级菜单
for menuItem in menu.keys():
print(menuItem,end=',')
print("quit")
elif secondMenu==None: #说明显示的是二级菜单
for menuItem in menu[firstLevelMenu].keys():
print(menuItem, end=',')
print("quit,back")
else: #说明显示的三级菜单
for menuItem in menu[firstLevelMenu][secondMenu]:
print(menuItem, end=',')
print("back,quit")
menu={"shabi":{"shabi1":["shabi11","shabi12"],"shabi2":["shabi21","shabi22"]},"caibi":{"caibi1":["caibi11","caibi12"],"caibi2":["caibi21","caibi22"]}}
def userInterface():
'''
用户交互程序
:return: None
'''
currentFirstLevel = None
currentSecondLevel = None
while True:
showMenu(menu,currentFirstLevel,currentSecondLevel)
useSelect =input("请输入你的选择:")
if useSelect=="quit": #无论处在哪一级,只要输入"quit" 就退出
exit()
if currentFirstLevel==None and useSelect in menu.keys() : #说明目前处在一级菜单, 并判断用户是否输入正确
currentFirstLevel=useSelect
continue
elif currentFirstLevel!=None and currentSecondLevel == None and useSelect in menu[currentFirstLevel].keys() or useSelect=="back": #说明目前处在二级菜单,判断用户是否输入正确
if useSelect=="back": #用户想返回上一级菜单
currentFirstLevel=None
continue
elif useSelect in menu[currentFirstLevel].keys():#判断用户是否输入正确
currentSecondLevel=useSelect
continue
print("有病吧")
if __name__ == '__main__':
userInterface()