python基础--实现多级菜单

代码效果比较:

很low的代码版本展示如下

 1 menu ={
 2     "福建":{
 3         "福州":{
 4             "闽侯":{},
 5             "连江":{},
 6             "马尾":{}
 7         },
 8         "厦门": {
 9             "思明":{},
10             "湖里": {},
11             "集美": {}
12         },
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         },
49         "汕头": {
50             "潮阳区": {},
51             "潮安区": {},
52             "澄海区": {}
53         },
54 
55     }
56 }
57 
58 back_flag = False
59 exit_flag = False
60 while not back_flag and not exit_flag:
61     for key in menu:
62         print(key)
63     choice = input("请输入名称>>>: ").strip()
64     if choice in menu:
65         while not back_flag and not exit_flag:#让程序停留在第二层
66             for key2 in menu[choice]:
67                 print(key2)
68             choice2 = input("第二次输入>>>: ").strip()
69             if choice2 == 'b':
70                 back_flag = True
71             if choice2 in menu[choice]:
72                  while not back_flag and not exit_flag:
73                     for key3 in menu[choice][choice2]:
74                         print(key3)
75                     choice3 = input("第三次输入>>>: ").strip()
76                     # if choice3 in  menu[choice][choice2][choice3]:
77                     #     while not back_flag:
78                     #         for key4 in menu[choice][choice2][choice3]:
79                     #             print(key4)
80                     print("没有更多了!")
81                     if choice3 =='b':
82                         back_flag = True
83                     if choice3 =='q':
84                         exit_flag = True
85                  else:
86                     back_flag = False
87         else:
88             back_flag = False

更新后代码版本:

 1 menu ={
 2     "福建":{
 3         "福州":{
 4             "闽侯":{},
 5             "连江":{},
 6             "马尾":{}
 7         },
 8         "厦门": {
 9             "思明":{},
10             "湖里": {},
11             "集美": {}
12         },
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         },
49         "汕头": {
50             "潮阳区": {},
51             "潮安区": {},
52             "澄海区": {}
53         },
54 
55     }
56 }
57 
58 
59 current_layer = menu
60 parent_layer =[] #新建空列表
61 flags = False
62 while not flags:
63     for key in current_layer:
64         print(key)
65     choice = input("请输入相应的名称【退出请输入q,返回上一层请输入b】>>>: ").strip()
66     if choice in current_layer:
67         parent_layer.append(current_layer)#将结果存入到列表中
68         current_layer = current_layer[choice] #改变至输入的结果
69     elif choice == 'b':
70         if parent_layer:#空白的列表的bool值:false
71             current_layer = parent_layer.pop()
72     elif choice == 'q':
73         flags = True
74     else:
75         print("查无此人")

亦或者是这样的:

 1 menu ={
 2     "福建":{
 3         "福州":{
 4             "闽侯":{},
 5             "连江":{},
 6             "马尾":{}
 7         },
 8         "厦门": {
 9             "思明":{},
10             "湖里": {},
11             "集美": {}
12         },
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         },
49         "汕头": {
50             "潮阳区": {},
51             "潮安区": {},
52             "澄海区": {}
53         },
54 
55     }
56 }
57 
58 level = []#空列表
59 while True:
60     for key in menu:
61         print(key)
62     choice = input(">>>: ").strip()
63     if choice == 'b':
64         if len(level) == 0:break
65         menu = level[-1]
66         level.pop()
67 
68     elif choice in menu:
69         level.append(menu)
70         menu = menu[choice]
71     else:
72         continue

 

转载于:https://www.cnblogs.com/ruichow/p/9437128.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用字典实现多级菜单功能,以下是一个示例代码: ```python # 定义多级菜单字典 menu = { '1': { 'name': '菜单1', 'children': { '1-1': { 'name': '子菜单1-1', 'action': lambda: print('执行子菜单1-1的操作') }, '1-2': { 'name': '子菜单1-2', 'action': lambda: print('执行子菜单1-2的操作') } } }, '2': { 'name': '菜单2', 'children': { '2-1': { 'name': '子菜单2-1', 'action': lambda: print('执行子菜单2-1的操作') }, '2-2': { 'name': '子菜单2-2', 'children': { '2-2-1': { 'name': '子菜单2-2-1', 'action': lambda: print('执行子菜单2-2-1的操作') } } } } }, '3': { 'name': '退出' } } # 定义打印菜单函数 def print_menu(menu_dict): for key, value in menu_dict.items(): print(f"{key}. {value['name']}") print() # 定义执行菜单函数 def run_menu(menu_dict): while True: print_menu(menu_dict) choice = input("请输入您的选择:") if choice in menu_dict: if 'action' in menu_dict[choice]: menu_dict[choice]['action']() break else: run_menu(menu_dict[choice]['children']) elif choice == '3': break else: print("非法输入,请重新输入!") # 执行菜单函数 run_menu(menu) ``` 这个代码实现了一个多级菜单,使用字典构建菜单结构,通过递归调用实现多级菜单功能。用户可以通过输入数字选择菜单项,程序会根据用户的选择执行相应的操作,如果选择的是一个有子菜单的菜单项,则会继续进入子菜单。如果选择的是退出菜单,则程序会退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值