Python 学习笔记【13】练习:三级菜单

  程序: 三级菜单

  要求:

    1、打印省、市、县三级菜单

    2、可返回上一级

    3、可随时退出程序

  定义字典

 1 data = {
 2     '北京': {
 3         '昌平': {
 4             '沙河': ['oldboy', 'test'],
 5             '天通苑': ['链家地产', '我爱我家']
 6         },
 7         '朝阳': {
 8             '望京': ['奔驰', '陌陌'],
 9             '国贸': ['CICC', 'HP'],
10             '东直门': ['Advent', '飞信'],
11         },
12         '海淀': {}
13     },
14     '山东': {
15         '德州': {},
16         '青岛': {},
17         '济南': {}
18     },
19     '广东': {
20         '东莞': {},
21         '常熟': {},
22         '佛山': {}
23     }
24 }

  方法一:

 1 exit_flag = False
 2 
 3 while not exit_flag:  # 打印第1层
 4     for i in data:
 5         print('第1层', i)
 6 
 7     choice2 = input("选择进入第2层,按q退出:")  # 选择,然后进入对应的第2层
 8     if choice2 in data:
 9         while not exit_flag:
10             for i2 in data[choice2]:
11                 print('	第2层', i2)
12 
13             choice3 = input("选择进入第3层,按q退出:")  # 选择,然后进入对应的第3层
14             if choice3 in data[choice2]:
15                 while not exit_flag:
16                     for i3 in data[choice2][choice3]:
17                         print("		第3层", i3)
18 
19                     choice4 = input("选择进入第4层,按q退出:")  # 选择,然后进入对应的第4层
20                     if choice4 in data[choice2][choice3]:
21                         while not exit_flag:
22                             for i4 in data[choice2][choice3][choice4]:
23                                 print('			第4层', i4)
24 
25                             choice_end = input("无层,按b返回,按q退出:")  # 无层,选择b返回
26                             if choice_end == 'b':  # 跳出第4层while循环,到第3层
27                                 break
28                             elif choice_end == 'q':
29                                 exit_flag = True
30 
31                     if choice4 == 'b':  # 跳出第3层while循环,到第2层
32                          break
33                     elif choice4 == 'q':
34                         exit_flag = True
35 
36             if choice3 == 'b':  # 跳出第2层while循环,到第1层
37                  break
38             elif choice3 == 'q':
39                 exit_flag = True
40 
41     if choice2 == 'q':
42         exit_flag = True

  方法二:(最后一层用pass回到第三层)

 1 exit_flag = False
 2 
 3 while not exit_flag:  # 打印第1层
 4     for i in data:
 5         print('第1层', i)
 6 
 7     choice2 = input("选择进入第2层,按q退出:")  # 选择,然后进入对应的第2层
 8     if choice2 in data:
 9         while not exit_flag:
10             for i2 in data[choice2]:
11                 print('	第2层', i2)
12 
13             choice3 = input("选择进入第3层,按q退出:")  # 选择,然后进入对应的第3层
14             if choice3 in data[choice2]:
15                 while not exit_flag:
16                     for i3 in data[choice2][choice3]:
17                         print("		第3层", i3)
18 
19                     choice4 = input("选择进入第4层,按q退出:")  # 选择,然后进入对应的第4层
20                     if choice4 in data[choice2][choice3]:
21                             for i4 in data[choice2][choice3][choice4]:
22                                 print('			第4层', i4)
23 
24                             choice_end = input("无层,按b返回,按q退出:")  # 无层,选择b返回
25                             if choice_end == 'b':  # 回到第3层
26                                 pass
27                             elif choice_end == 'q':
28                                 exit_flag = True
29 
30                     if choice4 == 'b':  # 跳出第3层while循环,到第2层
31                          break
32                     elif choice4 == 'q':
33                         exit_flag = True
34 
35             if choice3 == 'b':  # 跳出第2层while循环,到第1层
36                  break
37             elif choice3 == 'q':
38                 exit_flag = True
39 
40     if choice2 == 'q':
41         exit_flag = True

   方法三:

 1 def print_menu(ctx, lev=1):
 2     choice = 0
 3     while choice != "b":
 4         for i in ctx:
 5             print('	'*(lev-1) + i)
 6         if isinstance(ctx, dict):
 7             choice = input("选择进入%d>>:" % (lev+1))
 8             if choice in ctx:
 9                 print_menu(ctx[choice], lev+1)
10         else:
11             choice = input("最后一层,按b返回>>:")
12 print_menu(data)
原文地址:https://www.cnblogs.com/a1-code/p/6010784.html