程序: 三级菜单
要求:
- 打印省、市、县三级菜单
- 可返回上一级
- 可随时退出程序
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{ '青岛':{ '城阳区':{ '训练场':{} } } }, }
flag=1 while flag==1: for key in menu:#遍历第一层菜单 print(key)#给用户打印显示 choise=input("请选择(返回:b,退出:q):")#用户交互 if choise.lower()=="b":#将输入的b或者B转成小写的b continue #返回上级菜单 elif choise.lower()=="q":#将输入的q或者Q转成小写的q flag=0 #当输入q时标志位变成0,直接退出程序 while flag==1: for key in menu[choise]:#遍历新的菜单(下同) print(key) choise_a=input("请选择(返回:b,退出:q):") if choise_a.lower() == "b": break elif choise_a.lower() == "q": flag=0 while flag==1: for key in menu[choise][choise_a]: print(key) choise_b = input("请选择(返回:b,退出:q):") if choise_b.lower() == "b": break elif choise_b.lower() == "q": flag=0 while flag==1: for key in menu[choise][choise_a][choise_b]: print(key) choise_c = input("请选择(返回:b,退出:q):") if choise_c.lower() == "b": break elif choise_c.lower() == "q": flag=0
new_menu=menu#将menu设置成变量new_menu,新的菜单 old_menu=[menu]#将menu加入到old_menu菜单中,此列表是为了记录上层菜单的列表 while 1: for key in new_menu:#遍历第一层菜单 print(key)#打印给用户看 choise=input(">>>:")#用户交互 if choise in new_menu:#用户输入的在新的菜单里时,在退出本次while循环,进入for循环 # 此时改变我们定义的变量new_menu和old_menu old_menu.append(new_menu)#当我们进入下层菜单时本层菜单就变成了下层的上层菜单,所以将本层菜单加入这个列表中 new_menu=new_menu[choise]#将本层选择的下层菜单重新赋值给new_menu。 continue#完成上面准备后退出本次for循环再进入while循环 if choise=="b":#如果选择b,返回上层菜单--->通过取列表的最后值得到上层菜单 if len(old_menu)==0:#如果列表变成0,将原始菜单赋值给新菜单,防止报错 new_menu=menu else: new_menu=old_menu[-1]#取列表最后的值就是我们存的上层菜单 old_menu.pop()#当我们取到上层菜单后就将其从列表删除,为了下次能取到新的上层菜单 continue if choise=="q":#退出while循环 break