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连接DB2数据库
Aug 27 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
python 动态迁移solr数据过程解析
Sep 04 Python
python实现人机猜拳小游戏
Feb 03 Python
python 回溯法模板详解
Feb 26 Python
Python如何存储数据到json文件
Mar 09 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 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
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
phplot生成图片类用法详解
2015/01/06 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
简单使用Python自动生成文章
2014/12/25 Python
python中循环语句while用法实例
2015/05/16 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
基于python实现删除指定文件类型
2020/07/21 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
消防战士优秀事迹材料
2014/02/13 职场文书
婚宴邀请函
2015/01/30 职场文书
军事博物馆观后感
2015/06/05 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书