程序: 三级菜单
要求:
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)