Python 三级菜单

# _*_ coding : _*_
# Author : 杨Jack
"""
File_name : my_second_homework
Function :实现如下数据结构
数据结构:
menu = {
   '北京':{
      '海淀':{
         '五道口':{
            'soho':{},
            '网易':{},
            'google':{}
         },
         '中关村':{
            '爱奇艺':{},
            '汽车之家':{},
            'youku':{},
         },
         '上地':{
            '百度':{},
         },
      },
      '昌平':{
         '沙河':{
            '老男孩':{},
            '北航':{},
         },
         '天通苑':{},
         '回龙观':{},
      },
      '朝阳':{},
      '东城':{},
   },
   '上海':{
      '闵行':{
         "人民广场":{
            '炸鸡店':{}
         }
      },
      '闸北':{
         '火车站':{
            '携程':{}
         }
      },
      '浦东':{},
   },
   '山东':{},
}
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
Date : 2017.7.26
"""
dict = {
   '北京': {
      '海淀': {
         '五道口': {
            'soho': {},
            '网易': {},
            'google': {}
         },
         '中关村': {
            '爱奇艺': {},
            '汽车之家': {},
            'youku': {},
         },
         '上地': {
            '百度': {},
         },
      },
      '昌平': {
         '沙河': {
            '老男孩': {},
            '北航': {},
         },
         '天通苑': {},
         '回龙观': {},
      },
      '朝阳': {},
      '东城': {},
   },
   '上海': {
      '闵行': {
         "人民广场": {
            '炸鸡店': {}
         }
      },
      '闸北': {
         '火车站': {
            '携程': {}
         }
      },
      '浦东': {},
   },
   '山东': {},
}
dict_list = dict
current_list = []
while True:
   print("* " * 30)
   print("\t\t\t\t\t三级菜单练习")
   print("* " * 30)
   print("可供选择的地名:")
   for i in dict_list:
      print(i)
   menu = input("请输入地名,返回请按【1】,退出请按【0】:")
   # 四种情况:
   # 1、输入正确的地名,返回下一级菜单
   if menu in dict_list:
      print("%s 的下一级菜单:" % menu)
      current_list.append(dict_list)
      dict_list = dict_list[menu]
      # print(dict_list)
   # 2、输入数字1,根绝现场变量的情况给出提示或者返回上一级
   elif menu == "1":
      # 现场变量为0时是最上层,返回提示信息
      if len(current_list) == 0:
         print("- " * 30)
         print("已经是最上层,请输入地名,退出请按【0】")
         print("- " * 30)
      # 现场变量非0时,返回上一层
      else:
         dict_list = current_list.pop()  # 列表返回删除的最后一个元素,返回的是一个字典数值
         # dict_list = current_list()  # 类型不同,不可传递
         print(dict_list)
         print("请输入地名,返回请按【1】,退出请按【0】:")
   # 3、输入数字0,退出系统
   elif menu == "0":
      print("正在退出系统...\n已退出系统,欢迎下次使用!")
      break
   # 4、非法输入,给出提示并重复输入
   else:
      print("您的输入有误,请重新输入!")
      continue




   # 参考网上部分程序
   # current_menu = dict
   # previous_menu = []
   # #print(current_menu)
   # while True:
   #  for menu in current_menu:
   #     print(menu)
   #  choice = input("请输入你想查询的城市,返回上级请输1,退出请输q|Q:")
   #  if choice in current_menu:
   #     previous_menu.append(current_menu)
   #     # print(current_menu)
   #     # print(previous_menu)
   #     current_menu = current_menu[choice]
   #     # print(current_menu)
   #  elif choice == "1":
   #     if len(previous_menu) != 0:
   #        current_menu = previous_menu.pop()
   #        # current_menu = previous_menu()
   #     else:
   #        print("已是最顶层,无法再返回,请输入您要查询的城市,退出请输q")
   #  elif choice == "q" or choice == "Q":
   #     print("您已退出,谢谢使用!")
   #     break
   #  else:
   #     print("您输入的城市不正确,请重新输入,返回上级请输1,退出请输q")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值