三级菜单(低端版VS高端版)
>>>低端版
menu={'山西':
{'太原':
{'迎泽':['柳巷','五一广场','太原站'],
'小店':['山西财经大学','山西大学','武宿机场'],
'晋源':['晋祠','蒙山大佛''山西省图书馆']
},
'吕梁':
{'柳林':['联盛中学','龙花垣'],
'离石':['东关','滨河路的疯狗']
},
'大同':
{'南郊':['大同大学','方特'],
'云冈':['云冈石窟'],
}
},
'北京':
{'朝阳':
{'国贸':['渣打银行','CCTV'],
'望京':['陌陌','奔驰',''],
'三里屯':['优衣库','苹果']
},
'海淀':
{'五道口':['清华','快手'],
'中关村':['汽车之家','新东方'],
},
'昌平':
{'沙河':['老男孩','某鸟'],
'天通苑':['链家'],
'回龙观':['回龙观公园']
}
},
'陕西':
{'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
'长安区':['翠华山','杨虎城陵园'],
},
'榆林':{'榆阳区':['世纪广场'],
'吴堡县':['黄河大道']
}
}
}
exit_flag=False
while exit_flag==False:
for key in menu:
print(key)
choice=input('>>请选择进入下一层或选择exit退出主菜单:').strip()
if choice=='exit':
break
elif choice in menu:
while exit_flag==False:
for key2 in menu[choice]:
print(key2)
choice2=input('>>请选择进入下一层或者选择back返回上一层,选择exit退出主菜单:').strip()
if choice2=='back':
break
elif choice2=='exit':
exit_flag=True
elif choice2 in menu[choice]:
while exit_flag==False:
for key3 in menu[choice][choice2]:
print(key3)
choice3=input('>>请选择进入下一层或选择back返回上一层,选择exit退出主菜单:').strip()
if choice3=='back':
break
elif choice3=='exit':
exit_flag=True
elif choice3 in menu[choice][choice2]:
for i in menu[choice][choice2][choice3]:
print(i)
while exit_flag==False:
choice4=input('已到达最后一层,请选择back返回上一层或选择exit退出主菜单>>:').strip()
if choice4=='back':
break
elif choice4 == 'exit':
exit_flag = True
>>>高端版
menu={'山西':
{'太原':
{'迎泽':['柳巷','五一广场','太原站'],
'小店':['山西财经大学','山西大学','武宿机场'],
'晋源':['晋祠','蒙山大佛''山西省图书馆']
},
'吕梁':
{'柳林':['联盛中学','龙花垣'],
'离石':['东关']
},
'大同':
{'南郊':['大同大学','方特'],
'云冈':['云冈石窟'],
}
},
'北京':
{'朝阳':
{'国贸':['渣打银行','CCTV'],
'望京':['陌陌','奔驰',''],
'三里屯':['优衣库','苹果']
},
'海淀':
{'五道口':['清华','快手'],
'中关村':['汽车之家','新东方'],
},
'昌平':
{'沙河':['老男孩','某鸟'],
'天通苑':['链家'],
'回龙观':['回龙观公园']
}
},
'陕西':
{'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
'长安区':['翠华山','杨虎城陵园'],
},
'榆林':{'榆阳区':['世纪广场'],
'吴堡县':['黄河大道']
}
}
}
current_layer=menu #设置当前层的初始值为menu
choiced_layer=[] #建立一个已选层列表
while True:
for key in current_layer:
print(key) #打印当前层信息
choice=input('>>>输入名字进入下一层,back返回上一层,exit退出:').strip()
if choice in current_layer:
choiced_layer.append(current_layer) #把当前层加入已选层列表
current_layer=current_layer[choice] #当前层进入已选下一层
elif choice=='back':
if choiced_layer: #如果列表不为空,执行以下操作
current_layer = choiced_layer.pop() #将最后选择的层从已选层取出来,并赋给当前层
elif choice=='exit':
break
else:
print('无此项')
三级菜单(低端版VS高端版)的更多相关文章
- MOS管的低端驱动和高端驱动
低端功率开关驱动电路的工作原理 低端功率开关驱动的原理非常简单,就是负载一端直接和电源正端相连,另外一端直接和开关管相连,正常情况下,没有控制信号的时候,开关管不导通,负载中没有电流流过,即负载处于断 ...
- Linux内存描述之高端内存--Linux内存管理(五)
1. 内核空间和用户空间 过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间, ...
- A.01.10—模块的输出—PWM高端输出
PWM高端输出比低端输出用得多,如上次提到的卤素灯的控制均是采用高端输出的. PWM高端输出与PWM低端输出的差异就像固态高端输出与固态低端输出的差异类似,从线路失效后对用户的影响来看:高端输出为控制 ...
- Linux内存描述之高端内存–Linux内存管理(五)
服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...
- python三级菜单实例(傻瓜版和进阶版)
程序: python三级菜单 要求: : 1.打印省.市.县三级菜单 2.可返回上一级 3.可随时退出程序 方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~) ...
- Android自己定义控件:老版优酷的三级菜单(效果图 + Demo)
效果图: 制作思路: 1.先分析这个效果,事实上能够理解为把三级菜单分成level1,level2,level3,level1是始终显示的. 点击level1后,level2会出现:点击level2后 ...
- Python 三级菜单 增强版
需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...
- Python学习-------------------三级菜单简单版
题目: 多级菜单 1.三级菜单 2.可依次选择进入的各子菜单 3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...
- HubbleDotNet 最新绿色版,服务端免安装,基于eaglet 最后V1.2.8.9版本开发,bug修正,支持一键生成同步表
HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件.开源协议是 Apache 2.0.HubbleDotNet提供了基于SQL的全文检索接口,使用者只需会 ...
随机推荐
- iOS中类、元类、isa详解
类相信大家都知道是什么,如果看过runtime的源码或者看过相关的文章对isa肯定也不陌生,不过元类(meta class)大家可能就比较陌生了.不过大家也不要担心,我会细细道来,让大家明白它到底是个 ...
- [apr] Apache Portable Runtime
接手新项目,前任大量的使用了APR,虽然不影响理解主逻辑,但是看见一行不知道干嘛的代码,总是特别炸眼. 况且,虽然我从来不跨平台.但是APR如此优秀,学习理解它都不是浪费时间. 可是让人崩溃的是,竟然 ...
- elasticsearch-head的安装和使用
(一) 安装nodeJS, 下载nodejs安装包,直接下一步就可以,运行node -v 和npm -v有如下结果,表示安装成功. (二) 安装git(安装过程略过), 1.git clone git ...
- u-boot 编译,启动流程分析,移植
分析u-boot-1.1.6 的启动流程 移植u-boot 2012.04版本到JZ2440开发板 源码百度云链接:https://pan.baidu.com/s/10VnxfDWBqJVGY3SCY ...
- java的错题整理
为了阅读方便,我们写代码时要缩进,以便于更好的理解代码 对象是是具有相同属性和共同行为的一组类的实例,不是集合. B是标准格式,D没有对象接收它,所以这样子. boolean的默认值是false如果一 ...
- VS Code对.NET Core项目持续的Build
首先打开csproj文件, 添加一个watcher tool: <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGr ...
- MongoDB的客户端管理工具--nosqlbooster 查询工具使用
连接我的MongoDB 看到这样 打开db1数据库里面user集合,看到user集合里面的数据,他会自带查询语句 看这里以tree方式显示 可以以table方式显示 还可以json方式显示 按照自己的 ...
- ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes怎么处理
今天ytkah进行了应急数据库恢复,用Navicat for Mysql导入sql文件出现ERROR 1153 (08S01): Got a packet bigger than 'max_allow ...
- finecms5采集接口下载
哪里有finecms采集接口可以下载?我们在用finecms建站时比较纠结的是要如何采集文章,finecms商城是有售卖采集插件,价格是50元,有些朋友感觉比较贵,不太愿意买,我们也是比较权衡了才很久 ...
- linux 修改文件内容 vi命令
vi编辑器是所有Unix及Linux系统下标准的编辑器,介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它 ...