三级菜单实现的基本原理就是在字典中vaules也可以是字典,所以可以层层嵌套形成多级的格局
我们可以来看一下代码:
# 一级菜单def menu1(): print('一级菜单'.center(40,'-')) for index1,key1 in enumerate(dic.keys(),1): # 遍历一级菜单 print(index1,key1) dic_key[str(index1)] = key1 # print(dic_key) choose = input("请选择1级菜单,输入B返回上一级菜单,输入Q退出菜单:") if choose == 'q':quit() elif choose == 'b': print("此处为一级菜单,不能返回") elif dic_key.get(choose): menu2(dic_key[choose]) # 将二级菜单的key传给函数menu2 else: print("输入有误,请重新输入")def menu2(choose1): print('二级菜单'.center(40, '-')) for index2,key2 in enumerate(dic[choose1].keys(),1): # 遍历二级菜单 print(index2,key2) dic_key[str(index2)] = key2 choose2 = input("请选择2级菜单,输入B返回上一级菜单,输入Q退出菜单") if choose2 == 'q':quit() elif choose2 == 'b': menu1() elif dic_key.get(choose2): menu3(choose1,dic_key[choose2]) else: print("输入有误,请重新输入")def menu3(choose1,choose2): print('三级菜单'.center(40, '-')) for index3, key3 in enumerate(dic[choose1][choose2].keys(), 1): print(index3, key3) dic_key[str(index3)] = key3 choose3 = input("请选择3级菜单,输入B返回上一级菜单,输入Q退出菜单") if choose3 == 'q': quit() elif choose3 == 'b': menu2(choose1) elif dic_key.get(choose3): menu4(choose1,choose2,dic_key[choose3]) else: print("输入有误,请重新输入")def menu4(choose1,choose2,choose3): for index4, vaule in enumerate(dic[choose1][choose2][choose3],1): print(index4, vaule)if __name__ == '__main__': dic = \ { '北京': { '东城': { '沙河': ['老男孩', '恋家'], '天通苑': ['手机卖场', '屌丝吧'] }, '朝阳': { '花家地': ['朝阳公园', '望京soho'], '北小河': ['北小河公园', '北京中学'] } }, '上海': { '虹桥': { '虹桥机场': ['超市', '特产店', '水吧'], '东方明珠': ['电影院', '游泳馆', '餐馆'] }, '浦东': { '景秀路': ['世纪公园', '立交桥'], '中环路': ['鲁迅公园', '同济大学'] } } } dic_key = {} while True: menu1()