Python 城市菜单详解(超详解)
print("--------按数值进行查询--------")
menu={"内蒙古":{"赤峰市":["赤峰1","赤峰2","赤峰3"],"锡盟":["锡盟1","锡盟2","锡盟3"]},
"上海":{"青浦":["青浦1","青浦2","青浦3"],"黄埔":["黄埔1","黄埔2","黄埔3"]},
"山东":{"胶州":["胶州1","胶州2","胶州3"],"济南":["济南1","济南2","济南3"]},
"河南":{"开封":["河南1","河南2","河南3"],"郑州":["郑州","郑州2","郑州3"]}
}
flag=True
count = 0
while (flag):
for i,v in enumerate(menu.keys()):
print("--->",i,v) #打印出第一层key value
choice_1=input("请输入对应数字,按q退出:--->").strip() #接收键盘输入 .strip()前后空格都没了
if choice_1=='q': #判断是不是q是就退出
flag=False
break
if choice_1.isdigit(): #确定输入的是数字
num=int(choice_1) #是输入的为整形数字
if num<len(menu): #判断输入的数字是否小于字典里键元素个数
m=list(menu.keys()) #把字典中的键植入列表中
key_1=m[num] #取列表里的值m[0],m[1],m[...]
print(key_1)
while(flag): #准备进入第二层菜单
for i1,v1 in enumerate(menu[key_1]): #打印出第二层菜单
print("--->",i1,v1) #打印出第二层
choice_2=input("返回上一层:b 退出:q 请输入对应数字:").strip()#接收信息进入第三层
if choice_2.isdigit():
num_2=int(choice_2)
n=list(menu[key_1].keys())
key_2=n[num_2]
while(flag):
for i2,v2 in enumerate(menu[key_1][key_2]):#打印第二层菜单的信息
print("--->",i2,v2)
print("查询完毕!!!!")
choice=input("返回上一层:b 退出:q-->")
if choice=='b':
break
elif choice=='q':
flag=False
elif choice_2=='b':
break
elif choice_2=='q':
flag=False
else:
print("****请输入规定范围的数字*****")
else:
print("****请输入数字****")
Python 城市菜单详解(超详解)的更多相关文章
- Python3调用C程序(超详解)
Python3调用C程序(超详解) Python为什么要调用C? 1.要提高代码的运算速度,C比Python快50倍以上 2.对于C语言里很多传统类库,不想用Python重写,想对从内存到文件接口这样 ...
- Python学习一:序列基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- python 3.x 爬虫基础---Urllib详解
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- python selenium 三种等待方式详解[转]
python selenium 三种等待方式详解 引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...
- python设计模式之迭代器与生成器详解(五)
前言 迭代器是设计模式中的一种行为模式,它提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.python提倡使用生成器,生成器也是迭代器的一种. 系列文章 python设计模 ...
- **Python中的深拷贝和浅拷贝详解
Python中的深拷贝和浅拷贝详解 这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容. 要说清楚Python中的深浅拷贝,需要 ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
随机推荐
- Billboard(线段树)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 揭密: M2和高房价到底谁推高了谁?
近期,著名经济学家吴敬链向新华网等媒体表示:房价高的根本原本就是货币超发.近期十年来我国M2增长率(广义货币增长率)太快."钱太多了,有些人要保值就要投资买房,又因货币非常多购买力非常强.就 ...
- iptables 配置
#查看iptables现有规则 iptables -L -n #先允许所有,不然可能悲剧 iptables -P INPUT ACCEPT #清除所有默认规则 iptables -F #清除自定义规则 ...
- asp.net 使用my97 datepicker实现前后两个日期的范围界定
说明:日期选择后,前面的日期小于等后面的日期,后面的日期大于等于前面的日期.点点看就知道了:) - 这里将周末日期不可选.代码如下: <html xmlns="http://www.w ...
- SQL学习之汇总数据之聚集函数
一. 1.我们经常需要汇总数据而不用把他们实际检索出来,为此SQL提供了专门的函数,以便于分析数据和报表生成,这些函数的功能有: (1)确定表中行数(或者满足单个条件或多个条件或包含某个特定值的行数) ...
- IIS7.0/7.5 MVC3 实现伪静态
routes.MapRoute( "Default", "{controller}/{action}.html/{id}&qu ...
- WndProc Msg 消息列表
WM_NULL = 0x0000; WM_CREATE = 0x0001;应用程序创建一个窗口 WM_DESTROY = 0x0002;一个窗口被销毁 WM_MOVE = 0x0003;移动一个窗口 ...
- SSIS: Lookup组件高级用法,生成推断成员(inferred member)
将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式. 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式. 背景 比 ...
- C#中的ref与out参数(本文仅作为个人笔记)
假如一个方法的参数(形参)是引用类型,那么使用那个参数来进行的任何修改都会改变参数引用的数据.但这里的关键在于,虽然引用的数据发生了变化,但参数本生没有改变——它仍然引用的是一个对象.换句话说,虽然可 ...
- SQL server 和Oracle 序列
1,SQL Server序列创建与使用 BEGIN IF EXISTS (SELECT * FROM sysobjects WHERE name = 'event_seq') DROP SEQUENC ...