菜单的操作,进入下一层或返回上一层
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!")

浙公网安备 33010602011771号