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 相关文章推荐
python文件写入实例分析
Apr 08 Python
Python中类型关系和继承关系实例详解
May 25 Python
python字符串对其居中显示的方法
Jul 11 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
理解Python垃圾回收机制
Feb 12 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 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实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
python魔法方法-自定义序列详解
2016/07/21 Python
python中subprocess批量执行linux命令
2018/04/27 Python
python 将md5转为16字节的方法
2018/05/29 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
比较基础的php面试题及答案-编程题
2012/10/14 面试题
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
init进程的作用
2015/08/20 面试题
一套英文Java笔试题面试题
2016/04/21 面试题
毕业生的自我鉴定
2013/10/29 职场文书
网吧消防安全制度
2014/01/28 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
求职教师自荐书
2014/06/19 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
社会工作专业自荐信
2014/09/26 职场文书
房屋产权证明书
2014/10/15 职场文书
2014年医务科工作总结
2014/12/18 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记