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网络编程之数据传输UDP实例分析
May 20 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
python实现手机销售管理系统
Mar 19 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
Python的这些库,你知道多少?
Jun 09 Python
Python多个MP4合成视频的实现方法
Jul 16 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
CentOS安装php v8js教程
2015/02/26 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
为什么说python适合写爬虫
2020/06/11 Python
python os模块在系统管理中的应用
2020/06/22 Python
python3 简单实现组合设计模式
2020/07/02 Python
python使用建议与技巧分享(一)
2020/08/17 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
雪山饭庄的创业计划书范文
2014/01/18 职场文书
企业金融服务方案
2014/06/03 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
运动会开幕式主持词
2015/07/01 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js