• 三级菜单


    1.用递归的方法实现

    dic = {
        '北京': {
            '东城':
                {
                    '沙河': {
                        '链家':{},
                        '安居客':{'三里屯'}
                    },
                    '天通苑': {'北方明珠', '天通尾货'}
                },
            '朝阳':
                {
                    '花家地': {'朝阳公园', '望京soho'},
                    '北小河': {'北小河公园', '北京中学'}
                }
        },
        '上海': {
            '虹桥':
                {
                    '虹桥机场': ['超市', '特产店', '水吧'],
                    '东方明珠': ['电影院', '游泳馆', '餐馆']
                },
            '浦东':
                {
                    '景秀路': ['世纪公园', '立交桥'],
                    '中环路': ['鲁迅公园', '同济大学']
                }
        },
        '河北': {
            '石家庄':
                {
                    '行唐': ['东正', '阳关'],
                    '赵县': ['赵州桥', '高村乡']
                },
            '唐山':
                {
                    '滦南县': ['司各庄镇', '安各庄镇'],
                    '玉田县': ['玉田镇', '亮甲店镇']
                }
        }
    }
    #递归的方法实现
    def sanjicaidan(dic):
        while True:
            for k in dic:
                print(k)
            key = input('input>>>>')
            if key == 'b' or key == 'q':
                return key
            elif key in dic.keys() and dic[key]:
                ret = sanjicaidan(dic[key])       #递归调用
                if ret == 'q':
                    return 'q'
    sanjicaidan(dic)

    2.用堆栈的方式实现

    dic = {
        '北京': {
            '东城':
                {
                    '沙河': {
                        '链家':{},
                        '安居客':{'三里屯'}
                    },
                    '天通苑': {'北方明珠', '天通尾货'}
                },
            '朝阳':
                {
                    '花家地': {'朝阳公园', '望京soho'},
                    '北小河': {'北小河公园', '北京中学'}
                }
        },
        '上海': {
            '虹桥':
                {
                    '虹桥机场': ['超市', '特产店', '水吧'],
                    '东方明珠': ['电影院', '游泳馆', '餐馆']
                },
            '浦东':
                {
                    '景秀路': ['世纪公园', '立交桥'],
                    '中环路': ['鲁迅公园', '同济大学']
                }
        },
        '河北': {
            '石家庄':
                {
                    '行唐': ['东正', '阳关'],
                    '赵县': ['赵州桥', '高村乡']
                },
            '唐山':
                {
                    '滦南县': ['司各庄镇', '安各庄镇'],
                    '玉田县': ['玉田镇', '亮甲店镇']
                }
        }
    }
    l=[dic]
    while l:
        for key in l[-1]:            #l[-1]就是dic
            print(key)
        k = input('input>>>').strip()
        #如果输入的k在dic中且k还有值,那么就执行下面
        if k in l[-1].keys() and l[-1][k]:
            l.append(l[-1][k])
       #当输入北京时,l[-1][k]就相当于{'东城':{...},'朝阳':{...}}
        #l.append执行后l就是l=[dic,{'东城':{...},'朝阳':{...}}]
        elif k == 'b':
            l.pop()         #输入b时就把{'东城':{...},'朝阳':{...}}pop出去
        elif k == 'q':
            break
  • 相关阅读:
    迅为龙芯2K1000开发板虚拟机ubuntu安装软件
    迅为恩智浦IMX6Q开发板系统固件TF卡烧写
    瑞芯微迅为iTOP-3399开发板资料更新啦!最新版本为1.3版本
    迅为-龙芯2K1000开发板虚拟机ubuntu系统开关机
    迅为IMX6ULL开发板Linux驱动初探-最简单的设备驱动-helloworld
    迅为-龙芯2K1000开发板虚拟机ubuntu基础操作
    开始Blog
    16 bit 的灰度图如何显示
    GPU 总结
    同步,异步,多线程和事件总结
  • 原文地址:https://www.cnblogs.com/wm0217/p/10880222.html
Copyright © 2020-2023  润新知