三级菜单作业--递归、堆栈

menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}
# 递归实现
 1 def three(dic):
 2     while 1:
 3         for i in dic:
 4             print(i)
 5         key = input('input >>>').strip()
 6         if key == 'b' or key == 'q':
 7             return key
 8         elif key in dic.keys() and dic[key]:
 9             ret = three(dic[key])
10             if key == 'q':
11                 return 'q'
12         elif (not dic.get(key)) or (not dic[key]):   # 如果输入的key不在当前字典中,或者当前key对应的value为null
13             continue
14 
15 three(menu)
# 堆栈实现
 1 l = [menu]
 2 while l:
 3     for key in l[-1]:
 4         print(key)
 5     k = input('input>>>').strip()
 6     if k in l[-1].keys() and l[-1][k]:
 7         l.append(l[-1][k])
 8     if k == 'b':
 9         l.pop()
10     if k == 'q':
11         break
#
#

猜你喜欢

转载自www.cnblogs.com/Ryan-Fei/p/12214222.html
今日推荐