一、要求: 1、一开始打印出所有省份和提示 

      2、用户输入省份以此查询城市

      3、在按照输出的城市名提示用户输入,最后输出用户所查询的区县名

      4、随时输入“back”可以返回上一级菜单

      5、输入“Q”可以结束整个程序

      6、若输入的内容无效则重新输入

二、流程图:

三、步骤:

1、先将所需的数据存储。(利用字典和列表的嵌套)

2、获取到所有的省份名

3、获取到所有的城市名

4、判断用户输入是否有效,并执行相应功能

四、代码如下

import os
region = {
'山东' : {
'青岛' : ['四方','黄岛','崂山','李沧','城阳'],
'济南' : ['历城','槐荫','高新','长青','章丘'],
'烟台' : ['龙口','莱山','牟平','蓬莱','招远']
},
'江苏' : {
'苏州' : ['沧浪','相城','平江','吴中','昆山'],
'南京' : ['白下','秦淮','浦口','栖霞','江宁'],
'无锡' : ['崇安','南长','北塘','锡山','江阴']
},
'浙江' : {
'杭州' : ['西湖','江干','下城','上城','滨江'],
'宁波' : ['海曙','江东','江北','镇海','余姚'],
'温州' : ['鹿城','龙湾','乐清','瑞安','永嘉']
},
'安徽' : {
'合肥' : ['蜀山','庐阳','包河','经开','新站'],
'芜湖' : ['镜湖','鸠江','无为','三山','南陵'],
'蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇']
},
'广东' : {
'深圳' : ['罗湖','福田','南山','宝安','布吉'],
'广州' : ['天河','珠海','越秀','白云','黄埔'],
'东莞' : ['莞城','长安','虎门','万江','大朗']
}
}
print("'back'--返回上一级 'Q'--结束程序") #获取省份列表
province_list = list(region.keys())
print(province_list) #获取城市列表
city_list = []
for i in range(province_list.__len__()):
tem = list(region[province_list[i]].keys())
city_list.append(tem)
while 1:
#省份查询
cinprovince = input("请输入所要查询的省名: ")
if cinprovince in province_list:
city_index = province_list.index(cinprovince)
print('''%s : %s'''%(cinprovince,city_list[city_index]))
#城市查询
while 1:
cincity = input("请输入所要查询的城市名: ")
if cincity in city_list[city_index]:
print('''%s : %s'''%(cincity,region[cinprovince][cincity]))
sign = input("请输入命令: ")
if sign == "Q":
os._exit(0)
elif sign == 'back':
print('''%s : %s'''%(cinprovince,city_list[city_index]))
break
elif cincity == 'Q':
os._exit(0)
elif cincity == 'back':
break elif cinprovince == 'Q':
os._exit(0)
else:
print(province_list)
continue

五、心得:

1、os._exit()可以结束整个程序的执行,exit()也可以结束程序的执行,不过如果放在if或者for中,则只结束当前域内的程序,类似于break的功能

2、list(列表名.keys())与列表名.keys()的区别在于:前者打印出来之后没有dict.keys声明

3、listname.index(n)可以返回n所在listname中的下标

最新文章

  1. 用 Excel 测试“绘制两点间连线”的算法
  2. 如何给你的LinuxVPS装个远程桌面
  3. Device eth0 does not seem to be present, delaying initialization. 问题
  4. 算法實例-C#-信箱排序-PigeonHoleSort
  5. 4816 江哥的dp题b
  6. C语言->实验室->指针数组
  7. ASP.NET导出bdf文件
  8. JSTL分类查询
  9. 在TVideoGrabber中如何在预览时设置相机属性
  10. centos查看磁盘扇区大小等信息
  11. Saving structured data with json
  12. Regsvr32注册ActiveX控件
  13. HttpRuntime详解分析
  14. 【前端GUI】——网站设计的重要知识点总结&思维导图(一)
  15. 基于flexbox纯css框架的解析
  16. Sping4之注入参数
  17. php 将数组转换网址URL参数
  18. oracle字符串提取记录
  19. fastjson如何判断JSONObject和JSONArray
  20. requirements.txt 的使用与创建

热门文章

  1. WinForm中,设置不显示窗口的标题栏
  2. python 之pulp 线性规划介绍及举例
  3. JS 实现百度搜索功能
  4. java1.8--Optional类
  5. 错误:Invalid action class configuration that references an unknown class named [XXX]的解决
  6. 网卡bond技术
  7. SpringMVC 参数绑定注解解析
  8. MySQL笔记-turncat、drop、delete的区别
  9. 《Python网络编程》学习笔记--从例子中收获的计算机网络相关知识
  10. Python之Suds库调用WCF实现复杂参数序列化