全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python模拟三级菜单效果

本文实例为大家分享了Python模拟三级菜单效果的具体代码,供大家参考,具体内容如下

1.功能简介

此程序模拟多级菜单操作,实现按菜单项对应数字索引进入下级菜单,按b键回退到上一级菜单,按q键退出菜单。并用一个简化的学科专业目录进行了三级菜单测试,实际上此程序可适用任意多级菜单操作。 

2.实现方法

本程序采用python语言编写,为了高效实现菜单操作,减少循环次数,关键定义了如下三个变量:

current_menu_dict:非最低级菜单时为一个嵌套字典,在最低级菜单时为一个列表,存放当前级及后续各级菜单。
upper_menu_list:一个列表,存放比当前级更高级别的所有菜单嵌套字典的列表,最后一个元素比current_menu_dict多一层父菜单。
temp_menu:一个列表,只存放当前级的菜单,即为current_menu_dict的键值。

菜单操作过程:

(1)按数字键进入对应的下级菜单:数字键是temp_menu的索引,根据索引提取当前菜单项,即为current_menu_dict的一个键值,据此current_menu_dict可重新指向该键值对应的下一级菜单嵌套字典,不过在进入下级菜单之前,upper_menu_list.append(current_menu_dict)先把当前菜单嵌套字典添加为upper_menu_list的最后一个元素,为回退做准备。
(2)按b键回退到上一级菜单:回退时current_menu_dict=upper_menu_list.pop()获取上一级菜单嵌套字典,实现回退。
(3)按q键退出菜单:按q键时调用exit()退出程序。

简例示意:假设三级菜单字典为{一级菜单:{二级菜单:三级菜单}},如果当前菜单在第二级,此时
current_menu_dict={二级菜单:三级菜单}
upper_menu_list=[{一级菜单:{二级菜单:三级菜单}}]
temp_menu=[二级菜单]

3.流程图

4.代码

# Author:Byron Li

menu_data={
 '文学':
  {
   '中国语言文学':['语言学及应用语言学','汉语言文字学','中国古代文学','中国现当代文学'],
   '外国语言文学':['英语语言文学','亚非语言文学','阿拉伯语语言文学','外国语言学及应用语言学'],
   '新闻传播学': ['新闻学', '传播学'],
   '艺术学': ['音乐学', '美术学','戏剧戏曲学','电影学','舞蹈学']
  },

 '理学':
  {
   '数学':['基础数学','计算数学','概率论与数理统计','应用数学','运筹学与控制论'],
   '物理学':['理论物理','粒子物理与原子核物理','原子与分子物理','等离子体物理','无线电物理'],
   '化学': ['无机化学','分析化学','有机化学','物理化学','高分子化学与物理'],
   '生物学': ['植物学', '动物学','生理学','微生物学','遗传学'],
   '地球物理学': ['固体地球物理学', '空间物理学']
  },
 '工学':
  {
   '机械工程':['机械制造及其自动化','机械电子工程','机械设计及理论','车辆工程'],
   '电气工程':['电力系统及其自动化','高电压与绝缘技术','电力电子与电力传动','电工理论与新技术'],
   '计算机科学与技术': ['计算机系统结构','计算机软件与理论','计算机应用技术'],
   '土木工程': ['岩土工程', '结构工程','市政工程','防灾减灾工程及防护工程','桥梁与隧道工程'],
   '地质资源与地质工程': ['矿产普查与勘探', '地球探测与信息技术','地质工程']
  }
}

current_menu_dict=menu_data #存放当前级及后续各级菜单的嵌套字典,在最低级时为一个列表
upper_menu_list=[]   #存放比当前级更高级别的所有菜单字典的列表,最后一个元素比current_menu_dict多一层父菜单
temp_menu=[]     #存放当前级菜单的一个临时列表

while(True):
 for i,subject in enumerate(current_menu_dict):     #循环显示出当前菜单的索引和菜单项
  if type(current_menu_dict) == dict:      #如果当前菜单不是最低一级菜单,则显示索引和菜单项
   print(''.join(['\t'*len(upper_menu_list),'[',str(i),']',subject]))

  else:              #如果当前菜单是最低一级菜单则只显示菜单项,不显示索引
   print(''.join(['\t'*len(upper_menu_list),subject]))
  temp_menu.append(subject)

 choice=input(''.join(['\t'*len(upper_menu_list),'>>>']))  #输入选项
 if choice.isdigit():           #如果输入选项是菜单项对应的数字索引,则进入该菜单项下一级菜单
  if type(current_menu_dict) == dict:       #如果当前菜单不是最低一级菜单,则通过输入数字索引进入对应菜单项的下一级菜单
   index = int(choice)
   if index >= 0 and index < len(temp_menu):
    key = temp_menu[index]
    upper_menu_list.append(current_menu_dict)   #如果输入数字包含在菜单项索引中,则高级别菜单列表添加当前菜单为其最后一个元素,而当前菜单进入索引对应的下一级菜单
    current_menu_dict = current_menu_dict[key]
   else:
    print('输入错误数字,请重新输入!')
  else:
   print('已是最低级菜单,按b键退回上级菜单,按q键退出!')
 elif choice=='b':           #如果输入选项是"b",则退回到上一级菜单
  if len(upper_menu_list) > 0:        #如果当前菜单不是最高级菜单,取高级别菜单列表中的最后一个元素为当前菜单字典
   current_menu_dict=upper_menu_list.pop()
  else:             #如果当前菜单已是最高级菜单,不能回退
   print('已是最高级菜单,不能回退,按数字键选择菜单项进入子菜单,按q键退出')
 elif choice=='q':           #如果输入选项是"q",则退出菜单
  print('退出菜单!'.center(50,'*'))
  exit()
 else:
  print('输入错误,请重新输入')
 temp_menu=[]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Python  # 三级菜单  # 菜单  # Python3实现的简单三级菜单功能示例  # 使用python实现省市三级菜单效果  # Python字典实现简单的三级菜单(实例讲解)  # Python三级菜单的实例  # Python自动化开发学习之三级菜单制作  # python之wxPython菜单使用详解  # python递归查询菜单并转换成json实例  # Python基于win32ui模块创建弹出式菜单示例  # Python3.5实现的三级菜单功能示例  # 菜单项  # 已是  # 地球物理学  # 键值  # 数字键  # 即为  # 阿拉伯语  # 中国  # 退到  # 及其自动化  # 重新输入  # 微生物学  # 概率论  # 分析化学  # 有机化学  # 物理化学  # 信息技术  # 为其  # 只显示  # 土木工程 


相关文章: JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  高端企业智能建站程序:SEO优化与响应式模板定制开发  宝塔建站后网页无法访问如何解决?  如何通过VPS建站实现广告与增值服务盈利?  宁波免费建站如何选择可靠模板与平台?  建站之星展会模版如何一键下载生成?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  制作网站的软件免费下载,免费制作app哪个平台好?  南平网站制作公司,2025年南平市事业单位报名时间?  如何快速搭建高效服务器建站系统?  相册网站制作软件,图片上的网址怎么复制?  宝塔建站无法访问?如何排查配置与端口问题?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  SQL查询语句优化的实用方法总结  太平洋网站制作公司,网络用语太平洋是什么意思?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  Bpmn 2.0的XML文件怎么画流程图  Android自定义listview布局实现上拉加载下拉刷新功能  如何通过云梦建站系统实现SEO快速优化?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  制作企业网站建设方案,怎样建设一个公司网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  孙琪峥织梦建站教程如何优化数据库安全?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  建站主机如何安装配置?新手必看操作指南  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何选择服务器才能高效搭建专属网站?  建站主机与服务器功能差异如何区分?  七夕网站制作视频,七夕大促活动怎么报名?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  建站之星收费标准详解:套餐费用及年费价格表一览  如何打造高效商业网站?建站目的决定转化率  网站按钮制作软件,如何实现网页中按钮的自动点击?  如何实现建站之星域名转发设置?  开封网站制作公司,网络用语开封是什么意思?  如何在西部数码注册域名并快速搭建网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何通过虚拟主机空间快速建站?  如何高效配置香港服务器实现快速建站?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  浅谈Javascript中的Label语句 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。