Python进阶实战之三级菜单
一、Python进阶实战之三级菜单
打印省、市、县三级菜单
可返回上一级
可随时退出程序
1.1 面条版
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
tag = True
while tag:
menu1 = menu
for key in menu1: # 打印第一层
print(key)
choice1 = input('第一层>>: ').strip() # 选择第一层
if choice1 == 'b': # 输入b,则返回上一级
break
if choice1 == 'q': # 输入q,则退出整体
tag = False
continue
if choice1 not in menu1: # 输入内容不在menu1内,则继续输入
continue
while tag:
menu_2 = menu1[choice1] # 拿到choice1对应的一层字典
for key in menu_2:
print(key)
choice2 = input('第二层>>: ').strip()
if choice2 == 'b':
break
if choice2 == 'q':
tag = False
continue
if choice2 not in menu_2:
continue
while tag:
menu_3 = menu_2[choice2]
for key in menu_3:
print(key)
choice3 = input('第三层>>: ').strip()
if choice3 == 'b':
break
if choice3 == 'q':
tag = False
continue
if choice3 not in menu_3:
continue
while tag:
menu_4 = menu_3[choice3]
for key in menu_4:
print(key)
choice4 = input('第四层>>: ').strip()
if choice4 == 'b':
break
if choice4 == 'q':
tag = False
continue
if choice4 not in menu_4:
continue
# 第四层内没数据了,无需进入下一层
北京
上海
山东
第一层>>: 背景
北京
上海
山东
第一层>>: 北京
海淀
昌平
朝阳
东城
第二层>>: 海淀
五道口
中关村
上地
第三层>>: 中关村
爱奇艺
汽车之家
youku
第四层>>: q
1.2 文艺青年版
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
# part1(初步实现):能够一层一层进入
layers = [
menu,
]
while True:
current_layer = layers[-1]
for key in current_layer:
print(key)
choice = input('>>: ').strip()
if choice == 'q':
break
if choice not in current_layer: continue
layers.append(current_layer[choice])
# part2(改进):加上退出机制
layers = [
menu,
]
while True:
if len(layers) == 0: break
current_layer = layers[-1]
for key in current_layer:
print(key)
choice = input('>>: ').strip()
if choice == 'b':
layers.pop(-1)
continue
if choice == 'q': break
if choice not in current_layer: continue
layers.append(current_layer[choice])
北京
上海
山东
>>: 上海
闵行
闸北
浦东
>>: 浦东
>>: q
北京
上海
山东
>>: q
Python进阶实战之三级菜单的更多相关文章
- Python学习之编写三级菜单(Day1,作业二)
作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...
- python第四天 三级菜单新思路
今天是一个坎,在做三级菜单时卡住了,因为想要简洁的代码,就要用到递归函数,卡的不要不要的!不过最后在同学老师的提点帮助下,还是解决了! 2017-5-10发现之前的代码有BUG今天 修改了! 作业要求 ...
- python基础之省份三级菜单
菜单 menu = { #定义一个字典 '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家 ...
- Python实现简单的三级菜单
话不多说,直奔代码 # 要处理的字典 dic1 = { '北京': { '东城': { '沙河': ['沙河机场', '链家'], '天通苑': ['北方明珠', '天通尾货'] }, '朝阳': { ...
- python入门编程之三级菜单编程
菜单实现功能输入一层显示下一层菜单不论在哪层输入b返回上一层不论在哪层输入q退出菜单此代码通过利用字典的知识可以实现_Author_ = 'jc'data = { '北京':{ '昌平':{ '沙河' ...
- Python之路-(三级菜单)
data = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youk ...
- Python学习5,三级菜单实例
_author_ = "Happyboy" data = { '北京':{ "昌平":{ "沙河":["Happyboy" ...
- Python学习之字典--三级菜单
效果图: 实现代码: dic = { '人物':{ '帽子':{'前年玄铁帽'}, '武器':{'屠龙宝刀'} }, '属性':{ '力量':{35}, '敏捷':{66} }, '任务':{ '主线 ...
- 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程
点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加 ...
随机推荐
- 【实习第十天】odoo开发基础整合
前言 发文时间是2019年7月19日.提一下学习odoo的感受,odoo目前在国内并不是很流行,且主流是在企业型软件,所以导致目前odoo在网上的文献很少,学习相对来说比其他框架吃力.以下为大家总结1 ...
- SolrCloud 高可用集群搭建
1.1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...
- 12C新功能:在线移动数据文件 (Doc ID 1566797.1)
12C New Feature : Move a Datafile Online (Doc ID 1566797.1) APPLIES TO: Oracle Database - Enterprise ...
- Spring学习的第一天
Spring是以Ioc和Aop为内核,提供了表现层spring MVC 和持久层Spring JDBC等众多应用技术,还能整合开源世界众多著名的第三方框架和类库,成为使用最多的JavaEE企业应用开源 ...
- kubernets学习笔记
K8s CI :持续集成CD :持续交付 D --DeliveryCD :持续部署 D --Deployment Kubernetes Cluster: Masters: (3-host 做高可用)A ...
- 关于中医的一段对话 [ZZ] -- 思维训练故事
转载自新浪博客 网址: http://blog.sina.cn/dpool/blog/s/blog_9880df4201015khq.html?type=-1 关于中医的一段对话 2013-01-26 ...
- 记一起Java大对象引起的FullGC事件及GC知识梳理
背景 最近发生了一起 Java 大对象引起的 FullGC 事件.记录一下. 有一位商家刷单,每单内有 50+ 商品.然后进行订单导出.订单导出每次会从订单详情服务取100条订单数据.由于 100 条 ...
- mac怎么连接windows远程桌面
首先需要下载一个软件,因为苹果电脑并没有提供免费的软件给我们,所以不能像windows一样, 直接在任务管理中搜素远程桌面然后输入ip地址,用户名,密码就可以远程连接, 而苹果也有提供一个软件,但要付 ...
- Docker 零碎
Delete none tag docker image: $ docker stop $(docker ps -a | grep "Exited" | awk '{print $ ...
- jQuery基础之表单验证
在使用jquery-validate.js插件时可以做一些初始化配置在初始化jquery-validate.js对象的时候,将外部的一些配置和该插件内部的一些默认配置合并在一起,如果有相同的配置,前者 ...