Python练习_三级菜单

打印省、市、县三级菜单

可返回上一级

可随时退出程序

用递归实现:

menu = {
    ‘北京‘: {
        ‘海淀‘: {
            ‘五道口‘: {
                ‘soho‘: {},
                ‘网易‘: {},
                ‘google‘: {}
            },
            ‘中关村‘: {
                ‘爱奇艺‘: {},
                ‘汽车之家‘: {},
                ‘youku‘: {},
            },
            ‘上地‘: {
                ‘百度‘: {},
            },
        },
        ‘昌平‘: {
            ‘沙河‘: {
                ‘老男孩‘: {},
                ‘北航‘: {},
            },
            ‘天通苑‘: {},
            ‘回龙观‘: {},
        },
        ‘朝阳‘: {},
        ‘东城‘: {},
    },
    ‘上海‘: {
        ‘闵行‘: {
            "人民广场": {
                ‘炸鸡店‘: {}
            }
        },
        ‘闸北‘: {
            ‘火车战‘: {
                ‘携程‘: {}
            }
        },
        ‘浦东‘: {},
    },
    ‘山东‘: {},
}
def threeMenu(dic):
    while 1:
        for k in dic:
            print(k)
        key = input(‘输入城市(按b返回上一层,按q退出):‘)
        if key == ‘b‘ or key == ‘q‘: return key
        elif key in dic.keys() and dic[key]:
            ret = threeMenu(dic[key])
            if ret == ‘q‘: return ret
        elif (not dic.get(key)) or (not dic[key]):
            continue

-

用堆栈实现
menu = {
    ‘北京‘: {
        ‘海淀‘: {
            ‘五道口‘: {
                ‘soho‘: {},
                ‘网易‘: {},
                ‘google‘: {}
            },
            ‘中关村‘: {
                ‘爱奇艺‘: {},
                ‘汽车之家‘: {},
                ‘youku‘: {},
            },
            ‘上地‘: {
                ‘百度‘: {},
            },
        },
        ‘昌平‘: {
            ‘沙河‘: {
                ‘老男孩‘: {},
                ‘北航‘: {},
            },
            ‘天通苑‘: {},
            ‘回龙观‘: {},
        },
        ‘朝阳‘: {},
        ‘东城‘: {},
    },
    ‘上海‘: {
        ‘闵行‘: {
            "人民广场": {
                ‘炸鸡店‘: {}
            }
        },
        ‘闸北‘: {
            ‘火车战‘: {
                ‘携程‘: {}
            }
        },
        ‘浦东‘: {},
    },
    ‘山东‘: {},
}

l = [menu]
while l:
    for k in l[-1]:
        print(k)
    key = input(‘输入城市(按b返回上一层,按q退出):‘)
    if key in l[-1].keys() and l[-1][key]:
        l.append(l[-1][key])
    elif key == ‘b‘:
        l.pop()
    elif key == ‘q‘:
        break
    else:
        continue
#!/user/bin/env python
#-*-coding:utf-8 -*-
#Author: qinjiaxi
‘‘‘需求:
1.设计一个三级菜单
2.在任意时候可以返回上级菜单
3.在任何一级菜单里面可以随时退出程序

思路:设计一个嵌套字典用于存储菜单内容
        --->利用嵌套循环打印每一级的内容
            --->然后判断输入条件根据输入条件选择是否退出和返回上级
‘‘‘
data = {
    "武汉":
        {
        "光谷":{
            "关山":[‘文华‘,‘华科‘,‘湖科‘]
        },
        "江夏":{
            "郊外":[‘湖经‘,‘楚天‘,‘纺大‘]
        }
        },

    "北京":{
        ‘朝阳‘:{
            ‘a‘:[1,2,3]
        }
    },
    "上海":{
        "市内":{
            ‘b‘:[2,3,4]
        }
    }
}
print(data)
exit_flag = False#设置一个退出标志
while not exit_flag:
    for i in data:
        print(i)#第一层
    choice = input(‘选择进入1>>>:‘)
    if choice in data:
        while not exit_flag:
            for i2 in data[choice]:
                print(‘\t‘, i2)#第二层
            choice2 = input(‘选择进入2>>>:‘)
            if choice2 in data[choice]:
                while not exit_flag:
                    for i3 in data[choice][choice2]:
                        print(‘\t\t‘, i3)#第三层
                    choice3 = input(‘选择进入3>>>:‘)
                    if choice3 in data[choice][choice2]:
                            for i4 in data[choice][choice2][choice3]:
                                print(‘\t\t‘, i4)
                            choice4 = input(‘最后一层,按b返回>>>:‘)
                            if choice4 == ‘b‘:
                                pass
                            elif choice4 == ‘q‘:
                                exit_flag = True
                    if choice3 == ‘b‘:
                        break
                    elif choice3 == ‘q‘:
                        exit_flag = True
            if choice2 == ‘b‘:
                break
            elif choice2 == ‘q‘:
                exit_flag = True
    elif choice == ‘q‘:
        exit_flag = True

-

# _author : Ahern Li
# @_date : 2017/9/12

menu = {
  ‘浙江省‘:{
    ‘杭州市‘:{
      ‘余杭区‘:{‘中泰‘:{},‘临平‘:{}},
      ‘西湖区‘:{‘西湖‘:{},‘留下‘:{}}
      },
    ‘温州市‘:{
      ‘苍南县‘:{‘灵溪‘:{},‘龙港‘:{}},
      ‘瑞安县‘:{‘安阳‘:{},‘锦湖‘:{}}
      }
    },
  ‘广东省‘:{
    ‘广州市‘:{
      ‘越秀区‘:{‘人民路‘:{},‘北京路‘:{}},
      ‘荔湾区‘:{‘沙面‘:{},‘龙津‘:{}}
      },
    ‘珠海市‘:{
      ‘香洲区‘:{‘拱北‘:{},‘吉大‘:{}},
      ‘金湾区‘:{‘红旗镇‘:{},‘平沙镇‘:{}}
      }
    }
  }

# 返回标记
q_flag = True
# 退出标记
Q_flag = True
# 返回,退出标记出现False退出循环
while q_flag and Q_flag:
  # 遍历打印省份
  for i in menu:
    print(i)
  province = input(‘请输入要查找的省份(Q,退出):‘).strip()
  if province in menu:
    while q_flag and Q_flag:
      for i in menu[province]:
        print(i)
      city = input(‘请输入要查找的市(q,返回 或 Q,退出):‘).strip()
      if city in menu[province]:
        while q_flag and Q_flag:
          for i in menu[province][city]:
            print(i)
          county = input(‘请输入要查找的区或县(q,返回 或 Q,退出):‘).strip()
          if county in menu[province][city]:
            while q_flag and Q_flag:
              for i in menu[province][city][county]:
                print(i)
              # 提示最后一页,输入格式
              choice = input(‘最后一页! q,返回 或 Q,退出:‘).strip()
              if choice == ‘q‘:
                # 配合 else: q_flag = True 退出该层循环,返回上层循环
                q_flag = False
              elif choice == ‘Q‘:
                # 退出大循环
                Q_flag = False
              else:
                # 提示输入不合法
                print(‘输入错误!‘)
            # 改回 q_flag 的值,实现只退出一层循环
            else:
              q_flag = True
          elif county == ‘q‘:
            q_flag = False
          elif county == ‘Q‘:
            Q_flag = False
          else:
            print(‘输入错误!‘)
        else:
          q_flag = True
      elif city == ‘q‘:
        q_flag = False
      elif city == ‘Q‘:
        Q_flag = False
      else:
        print(‘输入错误!‘)
    else:
      q_flag = True
  elif province == ‘Q‘:
    Q_flag = False
  else:
    print(‘输入错误!‘)

-

# _author : Ahern Li
# @_date : 2017/9/12

menu = {
  ‘浙江省‘:{
    ‘杭州市‘:{
      ‘余杭区‘:{‘中泰‘:{},‘临平‘:{}},
      ‘西湖区‘:{‘西湖‘:{},‘留下‘:{}}
      },
    ‘温州市‘:{
      ‘苍南县‘:{‘灵溪‘:{},‘龙港‘:{}},
      ‘瑞安县‘:{‘安阳‘:{},‘锦湖‘:{}}
      }
    },
  ‘广东省‘:{
    ‘广州市‘:{
      ‘越秀区‘:{‘人民路‘:{},‘北京路‘:{}},
      ‘荔湾区‘:{‘沙面‘:{},‘龙津‘:{}}
      },
    ‘珠海市‘:{
      ‘香洲区‘:{‘拱北‘:{},‘吉大‘:{}},
      ‘金湾区‘:{‘红旗镇‘:{},‘平沙镇‘:{}}
      }
    }
  }

current_layer = menu  # 实现动态循环
parent_layer = []  # 保留所有父层,最后一个元素永远为父层

while True:
  print() # 仅为了打印美观
  for i in current_layer:   # 遍历打印地址
    print(i)
  choice = input(‘请在下方输入查询地址\n>>>:‘).strip()
  if choice in current_layer:
    if current_layer[choice]:  # 判断是否为末层
      parent_layer.append(current_layer) # 进入子层前,添加当前层作为父层
      current_layer = current_layer[choice]  # 修改子层
    else:
      print(‘当前是最后一页‘)
  elif choice == ‘‘:
    continue
  elif choice == ‘q‘:   # 返回上层
    if parent_layer:  # 判断 parent_layer 是否为空
      current_layer = parent_layer.pop() # 取出当前层父层
  # 退出循环
  elif choice == ‘Q‘:
    break
  else:
    print(‘输入错误!‘)

原文地址:https://www.cnblogs.com/dongye95/p/10193479.html

时间: 2024-10-21 21:08:42

Python练习_三级菜单的相关文章

python实例_三级菜单

一,作者介绍 吴海东:My Blog:http://www.cnblogs.com/whd-672701 二,程序说明 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 创建一个写有三层菜单的文件"3leve",菜单内容可以自定义. 脚本例子 with open("3level",'r',encoding="utf-8") a

(转)Python字典实现三级菜单

Python字典实现三级菜单 原文:https://www.cnblogs.com/pyramid1001/p/5803294.html 1 ################################################ 2 # Task Name: 三级菜单 # 3 # Description:打印省.市.县三级菜单 # 4 # 可返回上一级 # 5 # 可随时退出程序 # 6 #----------------------------------------------#

python 购物车和三级菜单

程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 #-*- coding:utf8 -*- shopping_list=[] product_list = [ ('Iphone',5800), ('Mac Pro',9800), ('Bike',800), ('Watch',10600), ('Coffee',31), ('Alex Python

python练习——moudule01——三级菜单

'''作业2,三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单''' menu={ '上海':{ '徐汇区':{ '卓挚', '腾讯' } }, '南京':{ '秦淮':{ '东方航空', '朗诗' } }, '盐城':{ '大丰':{ '森创', '阿胡苏' } }} #二逼青年版while True: for key1 in menu: print(key1) choice1=input('choice1>>:').strip() if choi

Python字典实现三级菜单

1 ################################################ 2 # Task Name: 三级菜单 # 3 # Description:打印省.市.县三级菜单 # 4 # 可返回上一级 # 5 # 可随时退出程序 # 6 #----------------------------------------------# 7 # Author:Oliver Lee # 8 ###########################################

Python程序3——三级菜单程序

程序: 三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 1 menu = { 2 '北京':{ 3 '海淀':{ 4 '五道口':{ 5 'soho':{}, 6 '网易':{}, 7 'google':{} 8 }, 9 '中关村':{ 10 '爱奇艺':{}, 11 '汽车之家':{}, 12 'youku':{}, 13 }, 14 '上地':{ 15 '百度':{}, 16 }, 17 }, 18 '昌平':{ 19 '沙河':{ 20 '老男孩':{}, 21

Python 实例3—三级菜单

老男孩培训学习: 1 ''' 2 Author:Ranxf 3 ''' 4 menu = { 5 '北京': { 6 '海淀': { 7 '五道口': { 8 'soho': {}, 9 '网易': {}, 10 'google': {} 11 }, 12 '中关村': { 13 '爱奇艺': {}, 14 '汽车之家': {}, 15 'youku': {}, 16 }, 17 '上地': { 18 '百度': {}, 19 }, 20 }, 21 '昌平': { 22 '沙河': { 23

python————————2(三级菜单)

#建立一个字典 dq={ '北京':{ '东城区':{ '安定门':{}, '和平里':{}, '鼓楼大街':{}, }, '西城区':{ '广安门':{}, '天桥':{}, '陶然亭':{}, }, '海淀区':{ '中关村':{}, '学院路':{}, '紫竹院':{}, }, '朝阳区':{ '北苑':{}, '安贞':{}, '大屯':{}, }, }, '上海':{ '黄埔区':{ '红山':{}, '大沙':{}, '长洲':{}, }, '徐汇区':{ '天平路':{}, '枫林

闲着无聊 一个python的,三级菜单。装逼版。

menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人