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 08 Python
Python中字符串的常见操作技巧总结
Jul 28 Python
python实现折半查找和归并排序算法
Apr 14 Python
详谈Python基础之内置函数和递归
Jun 21 Python
基于python3实现socket文件传输和校验
Jul 28 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
python3中property使用方法详解
Apr 23 Python
Python Flask框架模板操作实例分析
May 03 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
python中get和post有什么区别
Jun 19 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 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
substr()函数中文版
2006/10/09 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
利用Python如何生成随机密码
2016/04/20 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
创建卫生先进单位实施方案
2014/03/10 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
学校隐患排查制度
2015/08/05 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
Python 多线程处理任务实例
2021/11/07 Python