Python用字典构建多级菜单功能


Posted in Python onJuly 11, 2019

相关知识点:

#key-value
#字典是无序的,因为他没有下标,通过key找
info={
 'stu01':"liuhaolai",
 'stu02':"wangshulin"
}
print(info['stu01'])
info['stu03']='刘**'#若不存在该key,则直接添加
info['stu04']='王##'
print(info)
#del
del info['stu03']
print(info)
#pop
info.pop('stu04')
print(info)
print(info.get('stu03'))#不确定字典里有没有时用
print('stu01' in info)#判断有没有
print(info.values())#打印值
print(info.keys())#打印key
#字典的嵌套
place={
 '辽宁':{
  '大连':['很漂亮','很干净'],
  '沈阳':['很大','有些乱'],
  '阜新':['很小','很安逸']
 },
 '江苏':{
  '南京':['省会','性价比极低'],
  '苏州':['古今结合','小桥流水'],
  '镇江':['有些乱','一般般']
 }
}
print("------")
print(place)
place['江苏']['镇江'][1]='一般般啦'
print(place)
print(place.values())#打印值
print(place.keys())#打印key
place.setdefault('河北',{'唐山:[0,1]'})#查,没有就添加,和get不同
print(place)
print(place.setdefault('江苏',{'苏州:[0,1]'}))#查,没有就添加
info={
 'stu01':"liuhaolai",
 'stu02':"wangshulin",
 'stu03':'lucky',
 'stu04':'pangpang'
}
new={
 'stu01':'david',
 'stu02':'tree',
 'stu05':'lala'
}
new.setdefault('stu03','david')#查,没有就添加
print(new)
info.update(new)#将已有的覆盖更新,没有的创建
print(info)
print(info.items())#字典转成列表
c=dict.fromkeys([6,7,8],[1,{"name":'number'}])#初始化一个新字典
print(c)
#字典的循环
info2={
 'stu01':"liuhaolai",
 'stu02':"wangshulin",
 'stu03':'lucky',
 'stu04':'pangpang'
}
print(info2.get('stu01'))
print(info2.setdefault('stu01'))
for i in info2:#推荐!!!!!!
 print(i,info[i])
print("------")
for k,v in info2.items():#效果一样,但低效
 print(k,v)

--------------------------------------------------------------------------------

正文:

需求:

1.三级菜单
2.可依次选择进入各子菜单
3.按b逐级返回,按q退出

# Author:David Liu 
# Be Happy!

place={
 '辽宁1':{
  '大连':{
   '甘井子区':['大连理工大学'],
   '沙河口区':['数码广场']
  },
 },
 '辽宁2':{
  '沈阳': {
   '皇姑区': ['辽宁大学'],
   '铁西区': ['小树林']
  },
 },
 '辽宁3':{
  '阜新': {
   '海州区':['胖胖来'],
   '细河区':['细河区人民政府']
  }
 }
}
exit_flag=True
while exit_flag:
 for i in place:
  print(i)
 choice=input("选择进入,按q退出>>")
 if choice in place:
  while exit_flag:
   for i2 in place[choice]:
    print('\t',i2)
   choice2=input("选择进入,按b返回,按q退出>>")
   if choice2 in place[choice]:
    while exit_flag:
     for i3 in place[choice][choice2]:
      print('\t\t', i3)
     choice3 = input("选择进入,按b返回,按q退出>>")
     if choice3 in place[choice][choice2]:
      for i4 in place[choice][choice2][choice3]:
       print('\t\t\t',i4)
      choice4 = input("最后一层,按b返回,按q退出>>")
      if choice4=='b':
       pass#没用,占位的
      elif choice4=='q':
       exit_flag = False
     if choice3 == 'b':
      break
     elif choice3 == 'q':
      exit_flag = False
   if choice2 == 'b':
    break
   elif choice2 == 'q':
    exit_flag = False
 elif choice == 'q':
  exit_flag = False
print('\n',"已退出!".center(50,'-'))

ps:下面看下Python字典实现三级菜单

################################################
# Task Name: 三级菜单              #
# Description:打印省、市、县三级菜单       #
#       可返回上一级           #
#        可随时退出程序          #
#----------------------------------------------#
# Author:Oliver Lee              #
################################################
zone = {
  '山东' : {
    '青岛' : ['四方','黄岛','崂山','李沧','城阳'],
    '济南' : ['历城','槐荫','高新','长青','章丘'],
    '烟台' : ['龙口','莱山','牟平','蓬莱','招远']
  },
  '江苏' : {
    '苏州' : ['沧浪','相城','平江','吴中','昆山'],
    '南京' : ['白下','秦淮','浦口','栖霞','江宁'],
    '无锡' : ['崇安','南长','北塘','锡山','江阴']
  },
  '浙江' : {
    '杭州' : ['西湖','江干','下城','上城','滨江'],
    '宁波' : ['海曙','江东','江北','镇海','余姚'],
    '温州' : ['鹿城','龙湾','乐清','瑞安','永嘉']
  },
  '安徽' : {
    '合肥' : ['蜀山','庐阳','包河','经开','新站'],
    '芜湖' : ['镜湖','鸠江','无为','三山','南陵'],
    '蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇']
  },
  '广东' : {
    '深圳' : ['罗湖','福田','南山','宝安','布吉'],
    '广州' : ['天河','珠海','越秀','白云','黄埔'],
    '东莞' : ['莞城','长安','虎门','万江','大朗']
  }
}
province_list = list(zone.keys())       #省列表
# flag = False
# flag1 = False
while True:
  print(" 省 ".center(50,'*'))
  for i in province_list:
    print(province_list.index(i)+1,i)    #打印省列表
  pro_id = input("请输入省编号,或输入q(quit)退出:")  #省ID
  if pro_id.isdigit():
    pro_id = int(pro_id)
    if pro_id > 0 and pro_id <= len(province_list):
      pro_name = province_list[pro_id-1]   #根据省ID获取省名称
      city_list = list(zone[pro_name].keys())  #根据省名称获取对应的值,从新字典中获取key,即市列表
      while True:
        print(" 市 ".center(50,'*'))
        for v in city_list:
          print(city_list.index(v)+1,v)    #打印市列表
        city_id = input("请输入市编号,或输入b(back)返回上级菜单,或输入q(quit)退出:")
        if city_id.isdigit():
          city_id = int(city_id)
          if city_id > 0 and city_id <= len(city_list):
            city_name = city_list[city_id-1]  #根据市ID获取市名称
            town_list = zone[pro_name][city_name]  #根据省名称获取对应的值,从新字典中获取值,即县列表
            while True:
              print(" 县 ".center(50,'*'))
              for j in town_list:
                print(town_list.index(j)+1,j)
              back_or_quit = input("输入b(back)返回上级菜单,或输入q(quit)退出:")
              if back_or_quit == 'b':
                break        #终止此层while循环,跳转到上一层While。
              elif back_or_quit == 'q':
                # flag1 = True
                # break        #根据标志位结束程序。
                exit()
              else:
                print("输入非法!")
          else:
            print("编号%d不存在。"%city_id)
        elif city_id == 'b':
          break
        elif city_id == 'q':
          # flag = True
          # break
          exit()
        else:
          print("输入非法!")
        # if flag1:
        #   break
    else:
      print("编号%d不存在。"%pro_id)
  elif pro_id == 'q':
    break
  else:
    print("输入非法!")
  # if flag or flag1:
  #   break

总结

以上所述是小编给大家介绍的Python用字典构建多级菜单功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
Python切片操作实例分析
Mar 16 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
Python如何实现转换URL详解
Jul 02 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
python如何使用代码运行助手
Jul 03 Python
Python必须了解的35个关键词
Jul 16 Python
python实现canny边缘检测
Sep 14 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Python Flask实现进度条
May 11 Python
Python + OpenCV 实现LBP特征提取的示例代码
Jul 11 #Python
python切片的步进、添加、连接简单操作示例
Jul 11 #Python
python 日期排序的实例代码
Jul 11 #Python
Python qqbot 实现qq机器人的示例代码
Jul 11 #Python
python的一些加密方法及python 加密模块
Jul 11 #Python
kali中python版本的切换方法
Jul 11 #Python
python按比例随机切分数据的实现
Jul 11 #Python
You might like
编写自己的php扩展函数
2006/10/09 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
python机器学习之神经网络实现
2018/10/13 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
10张动图学会python循环与递归问题
2021/02/06 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
市政施工员自我鉴定
2014/01/15 职场文书
公司授权委托书范本
2014/09/18 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
领导参观欢迎词
2015/01/26 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
opencv 分类白天与夜景视频的方法
2021/06/05 Python