三级菜单

递归实现:

 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                 '北航': {},
22             },
23             '天通苑': {},
24             '回龙观': {},
25         },
26         '朝阳': {},
27         '东城': {},
28     },
29     '上海': {
30         '闵行': {
31             "人民广场": {
32                 '炸鸡店': {}
33             }
34         },
35         '闸北': {
36             '火车战': {
37                 '携程': {}
38             }
39         },
40         '浦东': {},
41     },
42     '山东': {},
43 }
44 
45 
46 def func(dic):  #例如: 北京 上海 山东
47     while True:
48         for k in dic:
49             print(k)    #例如:海淀 昌平 朝阳 东城
50         a = input('输入地区名,返回上一层输入b或B,退出请输入q或Q)>>>')  #例如:b
51         if a.upper() == 'B':
52             return  #次时返回func(dic),返回递归相当于返回上层
53         elif a in dic:
54             if dic[a]:
55                 func(dic[a])
56             else:
57                 print('下面没有值了,自动返回上一层')
58                 return
59         elif a.upper() == 'Q':
60             print('程序退出')
61             break
62 func(menu)

 

堆栈方法

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

 

posted @ 2018-12-21 19:44  Lewis姜  阅读(108)  评论(0编辑  收藏  举报