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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
Python性能优化的20条建议
Oct 25 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
python入门教程之识别验证码
Mar 04 Python
Python协程的用法和例子详解
Sep 09 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
python3实现多线程聊天室
Dec 12 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
Python 转换文本编码实现解析
Aug 27 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
js里的prototype使用示例
2010/11/19 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
人力资源经理自我评价
2014/01/04 职场文书
科级干部考察材料
2014/02/15 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
珍爱生命主题班会
2015/08/13 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python