#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# name:zzyu
map = {
"中国":{
"北京":{
"昌平区":{
"沙河镇":["西沙屯","路庄","王庄"],
"阳坊镇":["东贯市","西贯市","阳坊"],
},
"密云区":{
"高岭镇":["四合村","燕落村","高岭村"],
"密云镇":["阳光小区","月光小区","星光小区"]
},
"朝阳区":{
"北苑":["北苑小区","茉莉园小区","丽春园小区"],
"霍营":["霍营地铁","望京地铁","北苑地铁"]
}
},
"河北":{
"河北省":{
"石家庄":["石家庄小区","二小区","三小区"],
"保定":["保一区","保二区","保三区"]
},
"唐山":{
"开平区":["大麻各庄村","茅草营村","粟园镇"],
"古冶区":["刘各庄村","小寨村","养马庄村"]
},
"廊坊":{
"安次区":["小屯村","青坨村","东北尹"],
"武清区":["新刘庄","前台","北寺"]
}
},
"天津":{
"北辰区":{
"一镇":["心罗园","紫罗园","心泽园"],
"二镇":["荣业园","荣熙园","荣翔园"]
},
"红桥区":{
"三镇":["水竹园","水木天成","华水大厦"],
"四镇":["运通园","顺通园","天阔园"]
},
"西青区":{
"五镇":["西清医院","西青政府","西青银行"],
"六镇":["双河新村","河畔人家","文化中心"]
}
}
}
}
print("\033[31;1m选择期间按<q>退出,按<b>返回上一层\033[0m")
exit_flag = False
while not exit_flag:
for i in map:
print(i)
user_choice = input("请选择您的国家:")
if user_choice in map:
while not exit_flag:
for j in map[user_choice]:
print(j)
user_choice_1 = input("请选择您的城市:")
if user_choice_1 in map[user_choice]:
while not exit_flag:
for p in map[user_choice][user_choice_1]:
print(p)
user_choice_2 = input("请选择您所在的区县:")
if user_choice_2 in map[user_choice][user_choice_1]:
while not exit_flag:
for k in map[user_choice][user_choice_1][user_choice_2]:
print(k)
user_choice_3 = input("请选择您所在的乡镇:")
if user_choice_3 in map[user_choice][user_choice_1][user_choice_2]:
for f in map[user_choice][user_choice_1][user_choice_2][user_choice_3]:
print(f)
user_choice_4 = input("\033[31;1m已到最后一层,请选择<b>或<q>:\033[0m")
if user_choice_4 == "q":
exit_flag = True
elif user_choice_4 == "b":
pass
elif user_choice_3 == "q":
exit_flag = True
elif user_choice_3 == "b":
break
else:
print("输入有误请重新输入.....")
elif user_choice_2 == "q":
exit_flag = True
elif user_choice_2 == "b":
break
else:
print("输入有误请重新输入.....")
elif user_choice_1 == "q":
exit_flag = True
elif user_choice_1 == "b":
break
else:
print("输入有误请重新输入.....")
elif user_choice == "b":
print("已返回,请重新输入。")
elif user_choice == "q":
print("再见")
break
else:
print("您输入的国家不存在,请重新输入.....")

多级菜单初写(dict使用)的更多相关文章

  1. zTree下拉菜单多级菜单多选实现

    惯例,先上图: 这是在一个项目中,为了满足样式美观.多级菜单以及多选而将zTree插件更改过后的效果. 在实际的开发过程中,本来zTree也是可以满足需求的,但是zTree多选的话需要checkbox ...

  2. Python作业之多级菜单

    作业之多级菜单 菜单实现要求: 1. 列出菜单选择供选择 2. 选择对应内容进入下一级菜单 3. 任何时候都可以选择退出程序或返回上一级菜单 具体代码如下: goods = {'华为':{'A系':{ ...

  3. 原生JS封装创建多级菜单函数

    手写一个使用原生JS封装的多级菜单的函数,满足以下几点需求. 子类层级不确定,可根据数据自动生成多级菜单. 操作便捷,只需传入一个HTML标签. 缺点: 需要满足特定的数据结构 废话不多说,展示代码. ...

  4. Vue2 实现树形菜单(多级菜单)功能模块

    结构示意图 ├── index.html ├── main.js ├── router │ └── index.js # 路由配置文件 ├── components # 组件目录 │ ├── App. ...

  5. day1作业二:多级菜单操作(函数实现)

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...

  6. s12-day01-work02 python多级菜单展示

    README # README.md # day001-work-2 @南非波波 功能实现:多级菜单展示 流程图: ![](http://i.imgur.com/VTPPhZU.jpg) 程序实现: ...

  7. 2_python之路之多级菜单

    python之路之多级菜单 1.使用知识点 (1)列表,字典的使用 (2)if条件判断语句 (3)for/while循环的使用 2.代码详细 #!/usr/bin/env python # _*_ c ...

  8. [前端随笔][Vue] 多级菜单实现思路——组件嵌套

    说在前面 本篇记录学习了vue-element-admin中的多级菜单的实现 [传送门] @vue/cli 4.2.2:vuex:scss:组件嵌套 正文 创建项目 npm create 项目名 // ...

  9. java生成多级菜单树

    使用java实现一个多级菜单树结构 先上数据库 ps_pid字段很重要,是父级菜单的id Menu类 Menu类要新增一个字段,用来存放子菜单 /** * 子菜单列表 */ private List& ...

随机推荐

  1. Linux上安装配置Keepalived

    Linux上安装配置Keepalived 1.下载 自行去Keepalived官网进行下载,也可以通过如下链接进行下载2.0.18版本(目前的稳定版) 链接:https://pan.baidu.com ...

  2. python中的抽象类

    今天给大家介绍一下python中一个强大的功能:抽象类 因为最近发现很多同事不理解抽象类,正好抽空写篇博客,给大家介绍一下抽象类 抽象类的作用就是控制子类的方法的名称,要求子类必须按照父类的要求的实现 ...

  3. 谷歌开发者:看可口可乐公司是怎么玩转 TensorFlow 的?

    在这篇客座文章中,可口可乐公司的 Patrick Brandt 将向我们介绍他们如何使用 AI 和 TensorFlow 实现无缝式购买凭证. 可口可乐的核心忠诚度计划于 2006 年以 MyCoke ...

  4. python之常用模块ymal

    在学习python如何操作yml文件之前,我们先科普一下yml的格式 yaml是专门写配置文件的语言,非常简洁和强大,比json更加方便 YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便 ...

  5. JavaScript的URLSearchParams方法

    URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. 一个实现了 URLSearchParams 的对象可以直接用在 for…of 结构中,不需要使用 entries ...

  6. python中的可变和不可变对象 有序和无序对象

    可变对象和不可变对象的定义:对象存放在地址的值是否可以被改变 不可变对象包括:整形int.浮点型float .字符串str .元祖tuple.布尔型boole 可变对象包括 :列表list.集合set ...

  7. Python查看3Dnii文件

    from nibabel.viewers import OrthoSlicer3D from nibabel import nifti1 import nibabel as nib from matp ...

  8. ThreadPoolExcutor 原理探究

    概论 线程池(英语:thread pool):一种线程使用模式.线程过多会带来调度开销,进而影响缓存局部性和整体性能.而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务.这避免了在处理短时间 ...

  9. js函数基础回顾

    回头又跑去看了下尚硅谷的js基础视频 https://www.bilibili.com/video/av22958172/?p=51. 便做了如下笔记: 1.函数也是一个对象 2.函数可以封装一些功能 ...

  10. Vertica的这些事(十一)——-Vertica备份元数据信息

    ---备份资源池 SELECT 'CREATE RESOURCE POOL ' || name || CASE WHEN memorysize IS NULL THEN ' ' ELSE ' MEMO ...