菜单的操作,进入下一层或返回上一层

1.可以一层一层进入下一层
2.可以在每层返回上一层
3.可以在任意层退出程序
注意:进入最后一层时,用户输入继续进入下一级菜单,则返回内层菜单,用户在最外层返回上一级菜单时,则返回外层菜单。
如:
 1 #菜单
 2 menu = {
 3     '广东省':{
 4         '广州':{
 5             '广A区':{},
 6             '广B区':{},
 7             '广C区':{},
 8         },
 9         '深圳':{
10             '深A区':{},
11             '深B区':{},
12             '深C区':{},
13         },
14         '东莞':{
15             '东莞A区':{},
16             '东莞B区':{},
17             '东莞C区':{},
18         },
19     },
20     '广西省':{
21         '西A市':{
22             '西1A区':{},
23             '西1B区':{},
24             '西1C区':{},
25         },
26         '西B市':{
27             '西2A区':{},
28             '西2B区':{},
29             '西2C区':{},
30         },
31         '西C市':{
32             '西3A区':{},
33             '西3B区':{},
34             '西3C区':{},
35         },
36     },
37     '福建省':{
38         '福A市':{
39             '福1A区':{},
40             '福1B区':{},
41             '福1C区':{},
42         },
43         '福B市':{
44             '福2A区':{},
45             '福2B区':{},
46             '福2C区':{},
47         },
48         '福C市':{
49             '福3A区':{},
50             '福3B区':{},
51             '福3C区':{},
52         },
53     },
54 }

结果输出如下:

 1 广东省
 2 广西省
 3 福建省
 4 >>>:广东省
 5 广州
 6 深圳
 7 东莞
 8 >>>:广州
 9 广A区
10 广B区
11 广C区
12 >>>:广A区
13 广A区
14 广B区
15 广C区
16 >>>:b
17 广州
18 深圳
19 东莞
20 >>>:b
21 广东省
22 广西省
23 福建省
24 >>>:b
25 广东省
26 广西省
27 福建省
28 >>>:q
29 程序已退出

 

 

 

代码:

 1 menu = {
 2     '广东省':{
 3         '广州':{
 4             '广A区':{},
 5             '广B区':{},
 6             '广C区':{},
 7         },
 8         '深圳':{
 9             '深A区':{},
10             '深B区':{},
11             '深C区':{},
12         },
13         '东莞':{
14             '东莞A区':{},
15             '东莞B区':{},
16             '东莞C区':{},
17         },
18     },
19     '广西省':{
20         '西A市':{
21             '西1A区':{},
22             '西1B区':{},
23             '西1C区':{},
24         },
25         '西B市':{
26             '西2A区':{},
27             '西2B区':{},
28             '西2C区':{},
29         },
30         '西C市':{
31             '西3A区':{},
32             '西3B区':{},
33             '西3C区':{},
34         },
35     },
36     '福建省':{
37         '福A市':{
38             '福1A区':{},
39             '福1B区':{},
40             '福1C区':{},
41         },
42         '福B市':{
43             '福2A区':{},
44             '福2B区':{},
45             '福2C区':{},
46         },
47         '福C市':{
48             '福3A区':{},
49             '福3B区':{},
50             '福3C区':{},
51         },
52     },
53 }
54 
55 current_menu = menu #存储当前菜单
56 parent_layer = []   #存储每一次的父亲菜单
57 
58 flag = True     #flag为标志位
59 flag2 =True
60 while flag:
61     if flag2:   #打印当前菜单
62         for i in current_menu:
63             print(i)
64     choice = input(">>>:")
65     flag2 = True    #输入完成后,下一次输入前打印当前菜单
66     if choice in current_menu.keys():   #用户输入进入下一级菜单,则打印下一级的菜单
67         for i in current_menu[choice]:
68             print(i)
69         if current_menu[choice] != {}:  #如果不是最后一级菜单,则记录当前菜单为父亲菜单,并更新当前菜单
70             parent_layer.append(current_menu)
71             current_menu = current_menu[choice]
72             flag2 = False       #因为当前菜单已经输出,所以循环的输出菜单就可以不用输出
73     elif choice == 'b':
74         if parent_layer != []:      #如果不是一级菜单,即存在父亲菜单,则取出并赋值给当前菜单
75             current_menu = parent_layer.pop()
76     elif choice == 'q':     #利用标志位,循环终止
77         flag = False
78         print('程序已退出')
79     else:                   #错误语法输入
80         print("invalid input!")

 



posted @ 2019-03-20 19:46  我不是流氓鸭  阅读(588)  评论(0)    收藏  举报