>>>低端版

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高端版)的更多相关文章

  1. MOS管的低端驱动和高端驱动

    低端功率开关驱动电路的工作原理 低端功率开关驱动的原理非常简单,就是负载一端直接和电源正端相连,另外一端直接和开关管相连,正常情况下,没有控制信号的时候,开关管不导通,负载中没有电流流过,即负载处于断 ...

  2. Linux内存描述之高端内存--Linux内存管理(五)

    1. 内核空间和用户空间 过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间, ...

  3. A.01.10—模块的输出—PWM高端输出

    PWM高端输出比低端输出用得多,如上次提到的卤素灯的控制均是采用高端输出的. PWM高端输出与PWM低端输出的差异就像固态高端输出与固态低端输出的差异类似,从线路失效后对用户的影响来看:高端输出为控制 ...

  4. Linux内存描述之高端内存–Linux内存管理(五)

    服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...

  5. python三级菜单实例(傻瓜版和进阶版)

    程序: python三级菜单 要求: : 1.打印省.市.县三级菜单 2.可返回上一级 3.可随时退出程序 方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~) ...

  6. Android自己定义控件:老版优酷的三级菜单(效果图 + Demo)

    效果图: 制作思路: 1.先分析这个效果,事实上能够理解为把三级菜单分成level1,level2,level3,level1是始终显示的. 点击level1后,level2会出现:点击level2后 ...

  7. Python 三级菜单 增强版

    需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...

  8. Python学习-------------------三级菜单简单版

    题目: 多级菜单         1.三级菜单         2.可依次选择进入的各子菜单         3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...

  9. HubbleDotNet 最新绿色版,服务端免安装,基于eaglet 最后V1.2.8.9版本开发,bug修正,支持一键生成同步表

    HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件.开源协议是 Apache 2.0.HubbleDotNet提供了基于SQL的全文检索接口,使用者只需会 ...

随机推荐

  1. gateone安装使用

    下载地址 https://github.com/liftoff/GateOne unzip GateOne-master.zip cd GateOne-master/ python setup.py ...

  2. kvm qemu ,ubuntu debian rootfs 通过qemu复现路由器漏洞

    KVM https://www.toutiao.com/i6264303973256135170/?tt_from=weixin&utm_campaign=client_share&t ...

  3. [network] netfilter

    netfilter 是什么? netfilter.org is home to the software of the packet filtering framework inside the Li ...

  4. mysql的增删改查

    1.启动 Navicat for MySQL, 在 MySQL – 新建连接中完成连接参数配置.2.登录到本地数据库服务器后, 连接到 test 数据库上.3.用 Create Table 建立 St ...

  5. java 线程 (二) 线程池

    package cn.sasa.demo2; import java.util.concurrent.ExecutorService; import java.util.concurrent.Exec ...

  6. oracle中varchar2(2)存不了一个汉字的原因

    错误提示: 一个汉字占了三个字节,而不是两个,这跟字符集有关. 查一下字符集:select userenv('language') from dual; 结果显示,本机Oracle的字符集是UTF-8 ...

  7. linux 查看系统资源使用情况:vmstat

    vmstat命令可以动态地查看系统资源的使用情况,如内存/交换分区/CPU的使用情况,通过使用该命令可以判断系统的瓶颈在哪里: [root@mysql ~]# vmstat procs ------- ...

  8. MySql left join 多表连接查询优化语句

    先过滤条件然后再根据表连接 同时在表中建立相关查询字段的索引这样在大数据多表联合查询的情况下速度相当快 创建索引: create index ix_register_year ON dbo.selec ...

  9. mysql主从调优

    mysql主从同步调优 常用选项 适用于Master服务器 binlog-do-db=name 设置Master对哪些库记日志 binlog-ignore-db=name 设置Master对哪些库不记 ...

  10. perfmon——使用windows系统自带的性能监视器监控进程信息

    第一次使用perfmon监控应用进程的信息,步骤总结如下: 第一部分 性能监视器 1.快捷键Win+R打开运行界面,输入“perfmon”命令后回车即可打开windows的性能监视器 2.点击“性能监 ...