打印三级菜单
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
1、一级菜单:北京、深圳
2、二级菜单:北京(海淀、昌平、朝阳)
3、三级菜单:海淀(五道口、中关村、上地)
4、底层显示:上地(百度)
测试过程:
1、启动程序后,打印"北京、深圳"一级菜单,输入"北京",打印"海淀、昌平、朝阳",输入"海淀",打印"五道口 中关村 上地", 输入"五道口",打印"shoho 网易 google";
2、此时,输入b,返回上一级,打印"五道口 中关村 上地",接着输入b,返回上一级”海淀、昌平、朝阳“,接着输入b,返回”北京 深圳“
3、输入q,退出。
4、重新启动程序,输入错误的信息,提示”你输入的有误,请重新选择“,并打印一级菜单。输入q,则退出菜单。
5、重新启动程序,输入“深圳”,打印“南山 福田 宝安”,输入错误信息,提示“你输入的有误,请重新选择”,打印“南山 福田 宝安”,输入“南山”,
打印“南山街道 蛇口街道”,输入”南三街道“,打印”南头城 大新 大汪山 红花园 田厦“,提示”如上是最后一层,按b返回,q退出“
6、重新启动程序,输入“北京”,打印“海淀、昌平、朝阳”,输入“海淀”,打印“五道口 中关村 上地”,
经过测试: 可以满足如下需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
一、思路导图
二、代码实现
1 #!/usr/bin/env python3 2 # -*- coding:utf-8 -*- 3 # Author: davie 4 """ 5 需求: 6 可依次选择进入各子菜单 7 可从任意一层往回退到上一层 8 可从任意一层退出程序 9 所需新知识点:列表、字典 10 11 1、一级菜单:北京、深圳 12 2、二级菜单:北京(海淀、昌平、朝阳) 13 3、三级菜单:海淀(五道口、中关村、上地) 14 4、底层显示:上地(百度) 15 16 测试过程: 17 1、启动程序后,打印"北京、深圳"一级菜单,输入"北京",打印"海淀、昌平、朝阳",输入"海淀",打印"五道口 中关村 上地", 输入"五道口",打印"shoho 网易 google"; 18 2、此时,输入b,返回上一级,打印"五道口 中关村 上地",接着输入b,返回上一级”海淀、昌平、朝阳“,接着输入b,返回”北京 深圳“ 19 3、输入q,退出。 20 4、重新启动程序,输入错误的信息,提示”你输入的有误,请重新选择“,并打印一级菜单。输入q,则退出菜单。 21 5、重新启动程序,输入“深圳”,打印“南山 福田 宝安”,输入错误信息,提示“你输入的有误,请重新选择”,打印“南山 福田 宝安”,输入“南山”, 22 打印“南山街道 蛇口街道”,输入”南三街道“,打印”南头城 大新 大汪山 红花园 田厦“,提示”如上是最后一层,按b返回,q退出“ 23 24 6、重新启动程序,输入“北京”,打印“海淀、昌平、朝阳”,输入“海淀”,打印“五道口 中关村 上地”, 25 26 经过测试: 可以满足如下需求: 27 可依次选择进入各子菜单 28 可从任意一层往回退到上一层 29 可从任意一层退出程序 30 """ 31 menu = { 32 "北京": 33 { 34 "海淀":{ 35 "五道口":{"shoho":{"name":"搜狐公司","主营业务":["新闻","视频","搜索","游戏"]}, 36 "网易":{"name":"网易公司","主营业务":["中文全文检索","免费邮件系统","国产网络游戏"]}, 37 "google":{"name":"谷歌公司","主营业务":["互联网搜索","云计算","广告技术"]}}, 38 "中关村":{"爱奇艺":{"name":"爱奇艺视频","主营业务":["电商","游戏","电影票"]}, 39 "汽车之家":{"name":"汽车之家","主营业务":["车媒体","车电商","车金融","车生活"]}, 40 "youku":{"name":"优酷网","主营业务":["会员","游戏","支付","智能硬件和艺人经纪"]}}, 41 "上地":{"百度":{"name":"百度公司","主营业务":["全球最大的中文搜索引擎","百度地图","百度百科"]}} 42 }, 43 "昌平":{ 44 "沙河":{"老男孩":{},"北航":{}}, 45 "天通苑": {"链家地产":{},"天通苑物业":{}} 46 }, 47 "朝阳": { 48 "国贸":{"cctv":{},"oracle":{}}, 49 "三元桥":{"海航集团":{},"国美":{}}, 50 "望京":{"奔驰":{},"sony":{}} 51 } 52 }, 53 "深圳":{ 54 "南山":{ 55 "南山街道":{"南头城","田厦","大新","大汪山","红花园"}, 56 "蛇口街道":{"东角头","湾厦","海湾","渔一","渔二","海滨"} 57 }, 58 "福田":{ 59 "园岭街道":{"上林","鹏盛","红荔","红荔","南天"}, 60 "南园街道":{"东园","田滨江厦","沙埔头","南园","园西"}, 61 "沙头街道":{"新沙","新洲","上沙","下沙","天安"} 62 }, 63 "宝安":{ 64 "龙华":{"民治","龙华","大浪"}, 65 "公明":{"光明","李松蓢","下村","下村","西田"}, 66 "沙井":{"新桥","新二","上星","下万丰沙","沙一"} 67 } 68 } 69 } 70 flag_exit = False 71 while not flag_exit: 72 for i in menu: 73 print(i) 74 choice1 = input("已经进入1级菜单,按b或q退出>>: ").strip() 75 if choice1 in menu: 76 while not flag_exit: 77 for i2 in menu[choice1]: 78 print("\t",i2) 79 choice2 = input("已经选进入2级菜单,按b返回,q退出>>: ").strip() 80 if choice2 in menu[choice1]: 81 while not flag_exit: 82 for i3 in menu[choice1][choice2]: 83 print("\t\t",i3) 84 choice3 = input("已经选进入3级菜单,按b返回,q退出>>: ").strip() 85 if choice3 in menu[choice1][choice2]: 86 for i4 in menu[choice1][choice2][choice3]: 87 print(i4) 88 choice4 = input("如上是最后一层,按b返回,q退出>>: ").strip() 89 if choice4 == "b": 90 pass 91 elif choice4 == "q": 92 flag_exit = True 93 else: 94 print("输入有误,返回上一次!") 95 choice4 = "b" 96 # else: 97 # flag_exit = True 98 elif choice3 == "b": 99 break 100 elif choice3 == "q": 101 flag_exit = True 102 elif choice3 not in menu[choice1][choice2]: 103 print("你输入的有误,请重新选择") 104 elif choice2 == "b": 105 break 106 elif choice2 == "q": 107 flag_exit = True 108 elif choice2 not in menu[choice1]: 109 print("你输入的有误,请重新选择") 110 elif choice1 == "b": 111 break 112 elif choice1 == "q": 113 flag_exit = True 114 elif choice1 not in menu: 115 print("你输入的有误,请重新选择") 116 if choice1 == "b": 117 break 118 elif choice1 == "q": 119 flag_exit = True