三级菜单(低端版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的全文检索接口,使用者只需会 ...
随机推荐
- 优化网站设计(九):减少DNS查找的次数
前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议.这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题. 作为通用的原则,雅虎的工程师团队曾经给出过35个 ...
- init,service和systemctl的区别
参考http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 1.service是一个脚本命令,分析service可知 ...
- python知识点杂记
1. Python没有 ++, --操作. 2. Join比+快:tuple比list快 3. Dict的key是区分大小写的 4. 参数顺序:无默认值参数,有默认值参数,tuple,dict 5. ...
- 初识jmeter(2)
1.层级关系: 聚合报告1记录HTTP请求1的结果: 聚合报告2记录HTTP请求2的结果: 聚合报告记录所有线程组中HTTP请求的结果. 2.线程同时启动(并发) 一是可以在把线程组里面的 Ramp- ...
- overridePendingTransition
通过调用overridePendingTransition() 可以实时修改Activity的切换动画. 注意:该函数必须在Activity的onCreate()中调用或者finish()后立即调用.
- Linux中常用命令
.cd命令 cd 回到跟目录 cd uqihong 进入到uqihong这个文件夹(且cd命令只能一级一级的进入) 2.复制命令 cp -r /usr/local/tomcat ...
- Java基础知识之锁
Java中实现锁的方式有多种,并且锁的分类也有很多,这篇文章会从锁分类方面简单介绍各分类的锁的特点. 悲观锁和乐观锁 悲观锁:先假设别人也会对数据就行修改,所以先获得锁再进行操作.一个县城在获得锁之后 ...
- js 正则判断字符串下划线的长度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Orchard Core 模块化
在上一篇文章谈到如何搭好一个基础的Orchard Core项目. 今天要尝试Orchard Core的模块化. 我自己的理解:一个系统可以分成一个个模块,这一个个模块是由一个个类库去实现的. 首先,在 ...
- React之生命周期
哈喽,这是我的第一篇博客,请大家多多关照~ 追根溯源:What's the lifeCycle? 生命周期函数指在某一时刻组件会自动调用执行的函数: React生命周期概览: 接下来我们就着生命周期的 ...