Python三级菜单的实例


Posted in Python onSeptember 13, 2017

要求:

打印省、市、县三级菜单

可返回上一级

可随时退出程序

版本1

# _author : Ahern Li
# @_date : 2017/9/12

menu = {
  '浙江省':{
    '杭州市':{
      '余杭区':{'中泰':{},'临平':{}},
      '西湖区':{'西湖':{},'留下':{}}
      },
    '温州市':{
      '苍南县':{'灵溪':{},'龙港':{}},
      '瑞安县':{'安阳':{},'锦湖':{}}
      }
    },
  '广东省':{
    '广州市':{
      '越秀区':{'人民路':{},'北京路':{}},
      '荔湾区':{'沙面':{},'龙津':{}}
      },
    '珠海市':{
      '香洲区':{'拱北':{},'吉大':{}},
      '金湾区':{'红旗镇':{},'平沙镇':{}}
      }
    }
  }

# 返回标记
q_flag = True
# 退出标记
Q_flag = True
# 返回,退出标记出现False退出循环
while q_flag and Q_flag:
  # 遍历打印省份
  for i in menu:
    print(i)
  province = input('请输入要查找的省份(Q,退出):').strip()
  if province in menu:
    while q_flag and Q_flag:
      for i in menu[province]:
        print(i)
      city = input('请输入要查找的市(q,返回 或 Q,退出):').strip()
      if city in menu[province]:
        while q_flag and Q_flag:
          for i in menu[province][city]:
            print(i)
          county = input('请输入要查找的区或县(q,返回 或 Q,退出):').strip()
          if county in menu[province][city]:
            while q_flag and Q_flag:
              for i in menu[province][city][county]:
                print(i)
              # 提示最后一页,输入格式
              choice = input('最后一页! q,返回 或 Q,退出:').strip()
              if choice == 'q':
                # 配合 else: q_flag = True 退出该层循环,返回上层循环
                q_flag = False
              elif choice == 'Q':
                # 退出大循环
                Q_flag = False
              else:
                # 提示输入不合法
                print('输入错误!')
            # 改回 q_flag 的值,实现只退出一层循环
            else:
              q_flag = True
          elif county == 'q':
            q_flag = False
          elif county == 'Q':
            Q_flag = False
          else:
            print('输入错误!')
        else:
          q_flag = True
      elif city == 'q':
        q_flag = False
      elif city == 'Q':
        Q_flag = False
      else:
        print('输入错误!')
    else:
      q_flag = True
  elif province == 'Q':
    Q_flag = False
  else:
    print('输入错误!')

版本2

# _author : Ahern Li
# @_date : 2017/9/12

menu = {
  '浙江省':{
    '杭州市':{
      '余杭区':{'中泰':{},'临平':{}},
      '西湖区':{'西湖':{},'留下':{}}
      },
    '温州市':{
      '苍南县':{'灵溪':{},'龙港':{}},
      '瑞安县':{'安阳':{},'锦湖':{}}
      }
    },
  '广东省':{
    '广州市':{
      '越秀区':{'人民路':{},'北京路':{}},
      '荔湾区':{'沙面':{},'龙津':{}}
      },
    '珠海市':{
      '香洲区':{'拱北':{},'吉大':{}},
      '金湾区':{'红旗镇':{},'平沙镇':{}}
      }
    }
  }

current_layer = menu  # 实现动态循环
parent_layer = []  # 保留所有父层,最后一个元素永远为父层

while True:
  print() # 仅为了打印美观
  for i in current_layer:   # 遍历打印地址
    print(i)
  choice = input('请在下方输入查询地址\n>>>:').strip()
  if choice in current_layer:
    if current_layer[choice]:  # 判断是否为末层
      parent_layer.append(current_layer) # 进入子层前,添加当前层作为父层
      current_layer = current_layer[choice]  # 修改子层
    else:
      print('当前是最后一页')
  elif choice == '':
    continue
  elif choice == 'q':   # 返回上层
    if parent_layer:  # 判断 parent_layer 是否为空
      current_layer = parent_layer.pop() # 取出当前层父层
  # 退出循环
  elif choice == 'Q':
    break
  else:
    print('输入错误!')

以上这篇Python三级菜单的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一篇不错的Python入门教程
Feb 08 Python
python数据结构之二叉树的统计与转换实例
Apr 29 Python
Python删除windows垃圾文件的方法
Jul 14 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Python3多线程操作简单示例
May 22 Python
Python Flask框架模板操作实例分析
May 03 Python
Python 私有化操作实例分析
Nov 21 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
python怎么判断模块安装完成
Jun 19 Python
Python如何对齐字符串
Jul 30 Python
python爬虫破解字体加密案例详解
Mar 02 Python
基于Python代码编辑器的选用(详解)
Sep 13 #Python
python多线程socket编程之多客户端接入
Sep 12 #Python
python数据结构之链表详解
Sep 12 #Python
Python数据结构之单链表详解
Sep 12 #Python
python处理Excel xlrd的简单使用
Sep 12 #Python
Python3.6简单操作Mysql数据库
Sep 12 #Python
Python文件和流(实例讲解)
Sep 12 #Python
You might like
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
详解Python中DOM方法的动态性
2015/04/11 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python 类详解及简单实例
2017/03/24 Python
Python中GIL的使用详解
2018/10/03 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
党委领导班子整改方案
2014/09/30 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python
Tomcat配置访问日志和线程数
2022/05/06 Servers
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript
MySQL深分页问题解决思路
2022/12/24 MySQL