三级菜单

三级菜单
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典

# coding=utf-8
menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车战':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
import sys
dic = {}
menu1 = [menu]
m = 'init'
for k0, v0 in enumerate(menu1):
    dic[m] = {'previous': [], 'next': v0.keys()}
    for k, v in v0.items():
        print(k)
        dic[k] = {'previous': m, 'next': v.keys()}
        for k2, v2 in v.items():
            dic[k2] = {'previous': k, 'next': v2.keys()}
            for k3, v3 in v2.items():
                dic[k3] = {'previous': k2, 'next': v3.keys()}
                for k4 in v3.keys():
                    dic[k4] = {'previous': k3, 'next': []}


current_address = None

while 1:
    next_address = input('你要去哪:(返回上一级:b 退出:q)')
    if next_address == 'q':
        print('下次再见')
        sys.exit(0)

    elif next_address not in dic.keys() and next_address != 'b':
        print('请输入正确的地址')

    elif next_address == 'b':
        if not current_address:
            print('请先进入一个地址')

        elif not dic[current_address]['previous']:
            print('已到第一级, 无法返回')
        else:
            current_address = dic[current_address]['previous']

    else:
        if not dic[next_address]['next']:
            print('已到最下面一级了, 没东西了 !!!')
        else:
            current_address = next_address

    if current_address:
        for i in dic[current_address]['next']:
            print(i)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值