Python之三级菜单

Python之三级菜单

菜单:

 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 }
菜单

三级菜单:

 1 exit_flag = False
 2 while not exit_flag:
 3     #进入while循环,在for循环里遍历menu里的内容。
 4     for key in menu:
 5         print(key)
 6     #等待用户的输入,并去掉空白。
 7     choice = input("第一层>>:").strip()
 8     #判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。
 9     if len(choice) == 0 :
10         continue
11     if choice == 'q':
12         # 当exit_flag变量的值为True时,not exit_flag为False,结束循环
13 
14         exit_flag = True
15         continue
16     #判断输入的内容在字典中,进入此省下一级
17     if choice in menu:
18         #while循环防止在进入下一级菜单时,打印上一级的内容
19         while not exit_flag:
20             #通过字典拿到上一级输入的内容,并将所属上一级的内容赋予变量next_layer
21             next_layer = menu[choice]
22             #用for循环遍历next_layer的内容。
23             for key2 in next_layer:
24                 print(key2)
25             #等待用户继续输入,并去掉空白。
26             choice2 = input("第二层>>:").strip()
27             #判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。
28             if len(choice2) == 0:
29                 continue
30             #如果输入的是字符串‘b’,则结束本次循环,并返回上一级
31             if choice2 == 'b':
32                 break
33             #如果输入字符串‘q’,则退出本次循环。返回上一级菜单。
34             if choice2 == 'q':
35                 # 当exit_flag变量的值为True时,not exit_flag为False,结束循环
36                 exit_flag = True
37                 continue
38             # 判断输入的内容是否在next_layer中,进入此下一级
39             if choice2 in next_layer:
40                 # while循环防止在进入下一级菜单时,打印上一级的内容
41                 while not exit_flag:
42                     # 通过拿到next_layer的内容,并将所属上一级的内容赋予变量next_layer2
43                     next_layer2 = next_layer[choice2]
44                     # 用for循环遍历next_layer2的内容。
45                     for key3 in next_layer2:
46                         print(key3)
47                     # 等待用户继续输入,并去掉空白。
48                     choice3 = input("第三层>>>:").strip()
49                     # 判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。
50                     if len(choice3) == 0:
51                         continue
52                     # 如果输入的是字符串‘b’,则结束本次循环,并返回上一级
53                     if choice3 == 'b':
54                         break
55                     # 如果输入字符串‘q’,则退出本次循环。返回上一级菜单。
56                     if choice3 == 'q':
57                         # 当exit_flag变量的值为True时,not exit_flag为False,结束循环
58                         exit_flag = True
59                         continue
60                     # 如果输入的第三层内容在next_layer2中,则进入第三层
61                     if choice3 in next_layer2:
62                         # while循环防止在进入下一级菜单时,打印上一级的内容
63                         while not exit_flag:
64                             # 通过拿到next_layer2的内容,并将所属上一级的内容赋予变量next_layer3
65                             next_layer3 = next_layer2[choice3]
66                             # 用for循环遍历next_layer2的内容。
67                             for key4 in next_layer3:
68                                 print(key4)
69                             # 等待用户继续输入,并去掉空白。
70                             choice4 = input("第四层>>>>:").strip()
71                             # 如果输入的是字符串‘b’,则结束本次循环,并返回上一级
72                             if choice4 == 'b':
73                                 break
74                             if choice4 == 'q':
75                                 #当exit_flag变量的值为True时,not exit_flag为False,结束循环
76                                 exit_flag = True
77                                 continue
三级菜单初级版

三级菜单升级版:

#定义一个初始化层级,当前层
current_layer = menu   #当前层
last_layers = [menu]    #上一层

while True:
    for key in current_layer:
        print(key)

    choice = input('>>:').strip()
    if len(choice) == 0:
        continue
        #进入下一层级
    if choice in current_layer:
        # 取当前层,添加到列表
        last_layers.append(current_layer)
        #当起层
        current_layer = current_layer[choice]
    if choice == 'b':
        if last_layers:
            #取上一层,赋值给current_layer
            current_layer = last_layers[-1]
            last_layers.pop()
    if choice == 'q':
        break
原文地址:https://www.cnblogs.com/george92/p/8971223.html