三级菜单1

 

 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 # 若输入【北京】,则显示【海淀、昌平、朝阳、东城】,用户可退出、返回上一层,也可输入选择
47 # 若输入【海淀】,则显示【五道口、中关村、上地】,用户可退出、返回上一层,也可输入选择
48 # 若输入【五道口】,则显示【Sohu、网易、google】,用户可退出、返回上一层,也可输入选择
View Code

 

 1 # 递归思想
 2 def menu_func(menu):
 3     while True:
 4         for key in menu:
 5             print(key)
 6         inp = input('>>>').strip()
 7         if inp.upper() == 'Q': return 'q'
 8         if inp.upper() == 'B': return 'b'
 9         elif menu.get(inp):
10             flag = menu_func(menu[inp])
11             if flag == 'q': return 'q'
12 menu_func(menu)
13 print('已退出')
View Code

 

 1 # 堆栈思想
 2 lst = [menu]
 3 while lst:
 4     for key in lst[-1]:
 5         print(key)
 6     inp = input('>>>')   
 7     if inp.upper() == 'Q':
 8         break
 9     elif inp.upper() == 'B':  # 返回上一层
10         lst.pop()   # pop默认删除列表的最后一个元素
11     elif lst[-1].get(inp):
12         lst.append(lst[-1][inp])
View Code

 

posted @ 2019-06-27 22:11  Lowell  阅读(191)  评论(0编辑  收藏  举报