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的Django框架部署的一些建议
Apr 09 Python
用Python进行TCP网络编程的教程
Apr 29 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
深入了解Python 变量作用域
Jul 24 Python
基于Python爬取股票数据过程详解
Oct 21 Python
python BeautifulSoup库的安装与使用
Dec 17 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实现链结人气统计
2006/10/09 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
vue实现图片上传功能
2020/05/28 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
在django中,关于session的通用设置方法
2019/08/06 Python
python语言是免费还是收费的?
2020/06/15 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
中科软笔试题和面试题
2014/10/07 面试题
大学新生军训个人的自我评价
2013/10/03 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
房屋委托书范本
2014/04/04 职场文书
合作协议书范本
2014/10/25 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
python not运算符的实例用法
2021/06/30 Python