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常用小技巧总结
Jun 01 Python
pycharm远程调试openstack代码
Nov 21 Python
python psutil库安装教程
Mar 19 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
python3.x 生成3维随机数组实例
Nov 28 Python
Python中six模块基础用法
Dec 08 Python
python实现简单日志记录库glog的使用
Dec 13 Python
在Tensorflow中查看权重的实现
Jan 24 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
Python图像处理之图像拼接
Apr 28 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
JS实现php的伪分页
2008/05/25 PHP
PHP 遍历XP文件夹下所有文件
2008/11/27 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
从零学Python之hello world
2014/05/21 Python
Python正则表达式使用经典实例
2016/06/21 Python
带你认识Django
2019/01/15 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
党校培训自我鉴定范文
2014/03/20 职场文书
企业授权委托书范本
2014/04/02 职场文书
留学顾问岗位职责
2014/04/14 职场文书
先进个人申报材料
2014/12/30 职场文书
灵山大佛导游词
2015/02/04 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python