打印三级菜单

打印三级菜单

需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典

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
View Code

 

 

转载于:https://www.cnblogs.com/bjx2020/p/8643580.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值