china_map ={
 "华南":{
  "广东":["广州市","佛山市","深圳市","东莞市"],
  
  "广西":["南宁市","柳州市","桂林市","北海市"],
  
  
  "海南":["海口市","三亚市","三沙市","儋州市"]
  
 },
 "华东":{
  "上海":["黄浦区","卢湾区","徐汇区","长宁区","普陀区"],
  
  "安徽":["合肥市","芜湖市","淮南市","马鞍山市"],
  
  "江苏":["南京市","无锡市","徐州市","常州市","苏州市"]
  
 },
 "华北":{
  "北京":["东城区","西城区","朝阳区","丰台区","石景山区","海淀区"],
  
  "山西":["太原市","大同市","阳泉市","长治市"],
  
  "河北":["石家庄市","唐山市","秦皇岛市","邢台市"]
  
 },
 "华中":{
  "湖北":["武汉市","黄石市","十堰市","十堰市"],
  
  "河南":["郑州市","开封市","洛阳市","平顶山市"],
  
  "湖南":["长沙市","株洲市","衡阳市","邵阳市"]
  
 },
 "西南":{
  "重庆":["万州区","涪陵区","渝中区","大渡口区"],
  "四川":["成都市","自贡市","攀枝花市","德阳市"],
  "贵州":["贵阳市","六盘水市","遵义市","安顺市"],
  
  
 },
 "特别行政区":{
  "香港":["屯门","弯仔","北角","西贡"],
  "澳门":["花地玛堂区","圣安多尼堂区","大堂区","望德堂区"],
  
 }, 
}
print ("-------------------------------------------------")
print ("+            +")
print ("+            +")
print ("+   欢迎来到大中华地区查询系统地   +")
print ("+            +")
print ("+            +")
print ("-------------------------------------------------")
print ("大中华地区一级划分:")
for i in china_map: #遍历字典的key,列出大中华地区的名字
  
 print (i)
print ("-------------------------------------------------")
jump_flag = False #用于跳出外循环
for i in range(3): #外循环,指定循环3次,3次外循环完了,就退出程序
 greater_china_name = input("请输入你要查看的大中华地区名字:")
 if greater_china_name in china_map: #检查输入的地区是否在地图中,如果地区名字3次输入错误,程序退出
  gc_name = china_map[greater_china_name]
  province_name = gc_name.keys()#使用输入的信息作为key,取出省信息,存在字典中
  while True: #内循环,死循环,不指定循环次数,通过break或者flag跳出
   print ("------------------包含的省名字二级:-----------------") #分隔线
   for i in province_name: #遍历列表,取出省名字,打印出来
    print (i)
   print ("-------------------------------------------------") #分隔线
   sheng_name_input = input("请输入你要查看的省名字:")
  
   if sheng_name_input in province_name: #判断输入的省名字是否在地区列表中
    shi_name = china_map[greater_china_name][sheng_name_input] #取出省中有哪些市,存在列表中
    print ("--------------包含的城市名三级:-------------------") #分隔线
    for i in shi_name: #遍历列表,取出地区市名字,打印出来
     print (i)
    print ("------------------------------------------------") #分隔线
  
   if sheng_name_input not in province_name: #如果输入的省名字不在在地区列表中
    print ("输入的省名字不对,请重新输入")
    continue #跳出当次迭代,开始下一次迭代循环,直到地市名字输入正确为止(不停的要求输入)
   back_or_quit = input("请问是否退出?按b:Back是返回上一级菜单;按q:Exit是退出整个程序")
   #显示完地区市后,就要退出程序了,一个是全部退出,一个是返回上一级菜单
   if back_or_quit == "q":
    jump_flag = True #用于跳出外循环
    break #跳出while内循环
   if back_or_quit == "b":
    continue # 跳出当次迭代,开始下一次迭代循环,重新输入省处,返回上一步
   print ("你输入的信息有误,请重新输入")
  if jump_flag: #跳出外循环的条件满足
   break #跳出外循环
else:#上面的3次for循环正常执行完毕,else才会执行,如果是不正常退出(break),else不会执行
 print ("3次输入错误,程序退出")

python 三级联动的更多相关文章

  1. python三级联动

    #以字典的形式 保存相关省市数据 menu={ '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, 'HP':{}, '银行':{}, 'CCTV':{} }, '望京':{ '陌陌':{ ...

  2. Python实现用户交互,显示省市县三级联动的选择

    题目:Python实现用户交互,显示省市县三级联动的选择 定义的字典为: dic = { "江西": { "萍乡": ["安源", &quo ...

  3. PyQt5--基础篇:用eric6工具实现三级联动效果

    今天给大家介绍下python gui界面的三级联动效果,我们用工具eric6来实现,先看下效果图. 首先我们先创建项目linkage,再新建窗体进入到Qt设计师工具开始设计界面,完成后保存并退出. 在 ...

  4. Django之上传图片,分页,三级联动

    Django1.8.2中文文档:Django1.8.2中文文档 上传图片 配置上传文件保存目录 1)新建上传文件保存目录. 2)配置上传文件保存目录. 后台管理页面上传图片 1)设计模型类. 2)迁移 ...

  5. js封装的三级联动菜单(使用时只需要一行js代码)

    前言 在实际的项目开发中,我们经常需要三级联动,比如省市区的选择,商品的三级分类的选择等等. 而网上却找不到一个代码完整.功能强大.使用简单的三级联动菜单,大都只是简单的讲了一下实现思路. 下面就给大 ...

  6. 利用select实现年月日三级联动的日期选择效果

    × 目录 [1]演示 [2]规划 [3]结构生成[4]算法处理 前面的话 关于select控件,可能年月日三级联动的日期选择效果是最常见的应用了.本文是选择框脚本的实践,下面将对日期选择效果进行详细介 ...

  7. jQuery省市区三级联动插件

    体验效果:http://hovertree.com/texiao/bootstrap/4/支持PC和手机移动端. 手机扫描二维码体验效果: 代码如下: <!DOCTYPE html> &l ...

  8. jQuery - 全国省市县三级联动

    最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...

  9. 省市区三级联动 pickerView

    效果图 概述 关于 省市区 三级联动的 pickerView,我想大多数的 iOS 开发者应该都遇到过这样的需求.在遇到这样的需求的时候,大多数人都会觉的这个很复杂,一时无从下手.其实真的没那么复杂. ...

随机推荐

  1. Linux项目自动部署

    场景:linux中自动部署项目在工作中经常遇到,快速高效的部署项目能够大幅提高工作效率.现在将项目部署的过程记录下来,以供参考,其中用到的知识点现在还有很多不很清楚,后面要好好琢磨琢磨! 1 项目部署 ...

  2. plsql 数据迁移——导出表结构,表数据,表序号

    场景:项目开发完之后要部署在不同的环境进行测试,这时候就需要将数据库中的表结构,序号,数据进行迁移,这时候就需要能够熟练的使用plsql. 问题: 导出的表结构,在另一个数据库中无法导入 部分表的数据 ...

  3. vue-axios配置token,上传图片

    vue1.0用 vue-resource 目前不维护了 vue2.0用 axios 使用 1.安装axios, npm install axios 2.在main.js中配置 import axios ...

  4. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. Java基础之集合框架类及泛型简介

    Collection接口 Collection 通用的常见方法 add()添加一个元素,可以指定脚标 addAll()将一个collection放入 clear()清除 remove()删除元素,返回 ...

  6. 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)

    第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...

  7. Hibernate批量操作(一)

    在项目的开发过程之中,我们常会遇到数据的批量处理问题.在持久层采用Hibernate框架时,在进行批量操作时,需要考虑Hibernate实现机制带来的一些问题. 我们知道在每个Hibernate Se ...

  8. web添加第三方应用,前端解决跨域问题的8种方案

    应用场景 web应用通过QQ登录授权实现第三方登录. 操作步骤 1. 注册成为QQ互联平台开发者,http://connect.qq.com/ 2. 准备一个可访问的域名,如dev.foo.com 3 ...

  9. 浅析MySQL中的Index Condition Pushdown (ICP 索引条件下推)和Multi-Range Read(MRR 索引多范围查找)查询优化

    本文出处:http://www.cnblogs.com/wy123/p/7374078.html(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误 ...

  10. 从SVN到Git最强指南

    对于软件开发人员来说,版本控制系统他们再熟悉不过了,所谓版本控制系统就是软件项目开发过程中用于储存开发人员所写代码所有修订版本的软件.它的主要目的是实现开发团队并行开发.提高开发效率,对软件开发进程中 ...