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实现定时同步本机与北京时间的方法
Mar 24 Python
Django框架实现逆向解析url的方法
Jul 04 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Django框架使用mysql视图操作示例
May 15 Python
Python中一些深不见底的“坑”
Jun 12 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python实现人机猜拳小游戏
Feb 03 Python
Python continue语句实例用法
Feb 06 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python自动化爬取天眼查数据的实现
Jun 15 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
模仿OSO的论坛(一)
2006/10/09 PHP
php全角字符转换为半角函数
2014/02/07 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
Python实现建立SSH连接的方法
2015/06/03 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
pandas多级分组实现排序的方法
2018/04/20 Python
python队列queue模块详解
2018/04/27 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
JAVA代码查错题
2014/10/10 面试题
会计自我鉴定
2013/11/02 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
二年级评语大全
2014/04/23 职场文书
区级文明单位申报材料
2014/05/15 职场文书
服装发布会策划方案
2014/05/22 职场文书
联片教研活动总结
2014/07/01 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang