zoukankan      html  css  js  c++  java
  • 三级菜单

    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
  • 相关阅读:
    JQuery的摸索之路(一)
    C#操作excel(NPOI篇)
    Mschart学习(MSchart介绍)
    JQuery的摸索之路(二比较)
    Mschart学习(开篇)
    Mschart学习(官方demo共享)
    SQL进阶提升(疑惑篇order by)学习sql server2005 step by step(十一)
    一步一步学习C#(二C#基础)
    NickLee的学习
    Linux 命令学习一
  • 原文地址:https://www.cnblogs.com/wm0217/p/10880222.html
Copyright © 2011-2022 走看看