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实现目录树生成示例
Mar 28 Python
python字符串连接的N种方式总结
Sep 17 Python
Python中进程和线程的区别详解
Oct 29 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
python 读取txt中每行数据,并且保存到excel中的实例
Apr 29 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
tornado+celery的简单使用详解
Dec 21 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 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
如何开始收听短波广播
2021/03/01 无线电
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python中字符串的格式化方法小结
2016/05/03 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
工程质量承诺书
2014/03/27 职场文书
产品开发计划书
2014/04/27 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
法院执行局工作总结
2015/08/11 职场文书
Go web入门Go pongo2模板引擎
2022/05/20 Golang