Python之三级菜单
Python之三级菜单
菜单:
1 menu = { 2 '北京':{ 3 '海淀':{ 4 '五道口':{ 5 'soho':{}, 6 '网易':{}, 7 'google':{} 8 }, 9 '中关村':{ 10 '爱奇艺':{}, 11 '汽车之家':{}, 12 'youku':{}, 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 }
三级菜单:
1 exit_flag = False 2 while not exit_flag: 3 #进入while循环,在for循环里遍历menu里的内容。 4 for key in menu: 5 print(key) 6 #等待用户的输入,并去掉空白。 7 choice = input("第一层>>:").strip() 8 #判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。 9 if len(choice) == 0 : 10 continue 11 if choice == 'q': 12 # 当exit_flag变量的值为True时,not exit_flag为False,结束循环 13 14 exit_flag = True 15 continue 16 #判断输入的内容在字典中,进入此省下一级 17 if choice in menu: 18 #while循环防止在进入下一级菜单时,打印上一级的内容 19 while not exit_flag: 20 #通过字典拿到上一级输入的内容,并将所属上一级的内容赋予变量next_layer 21 next_layer = menu[choice] 22 #用for循环遍历next_layer的内容。 23 for key2 in next_layer: 24 print(key2) 25 #等待用户继续输入,并去掉空白。 26 choice2 = input("第二层>>:").strip() 27 #判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。 28 if len(choice2) == 0: 29 continue 30 #如果输入的是字符串‘b’,则结束本次循环,并返回上一级 31 if choice2 == 'b': 32 break 33 #如果输入字符串‘q’,则退出本次循环。返回上一级菜单。 34 if choice2 == 'q': 35 # 当exit_flag变量的值为True时,not exit_flag为False,结束循环 36 exit_flag = True 37 continue 38 # 判断输入的内容是否在next_layer中,进入此下一级 39 if choice2 in next_layer: 40 # while循环防止在进入下一级菜单时,打印上一级的内容 41 while not exit_flag: 42 # 通过拿到next_layer的内容,并将所属上一级的内容赋予变量next_layer2 43 next_layer2 = next_layer[choice2] 44 # 用for循环遍历next_layer2的内容。 45 for key3 in next_layer2: 46 print(key3) 47 # 等待用户继续输入,并去掉空白。 48 choice3 = input("第三层>>>:").strip() 49 # 判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。 50 if len(choice3) == 0: 51 continue 52 # 如果输入的是字符串‘b’,则结束本次循环,并返回上一级 53 if choice3 == 'b': 54 break 55 # 如果输入字符串‘q’,则退出本次循环。返回上一级菜单。 56 if choice3 == 'q': 57 # 当exit_flag变量的值为True时,not exit_flag为False,结束循环 58 exit_flag = True 59 continue 60 # 如果输入的第三层内容在next_layer2中,则进入第三层 61 if choice3 in next_layer2: 62 # while循环防止在进入下一级菜单时,打印上一级的内容 63 while not exit_flag: 64 # 通过拿到next_layer2的内容,并将所属上一级的内容赋予变量next_layer3 65 next_layer3 = next_layer2[choice3] 66 # 用for循环遍历next_layer2的内容。 67 for key4 in next_layer3: 68 print(key4) 69 # 等待用户继续输入,并去掉空白。 70 choice4 = input("第四层>>>>:").strip() 71 # 如果输入的是字符串‘b’,则结束本次循环,并返回上一级 72 if choice4 == 'b': 73 break 74 if choice4 == 'q': 75 #当exit_flag变量的值为True时,not exit_flag为False,结束循环 76 exit_flag = True 77 continue
三级菜单升级版:
#定义一个初始化层级,当前层 current_layer = menu #当前层 last_layers = [menu] #上一层 while True: for key in current_layer: print(key) choice = input('>>:').strip() if len(choice) == 0: continue #进入下一层级 if choice in current_layer: # 取当前层,添加到列表 last_layers.append(current_layer) #当起层 current_layer = current_layer[choice] if choice == 'b': if last_layers: #取上一层,赋值给current_layer current_layer = last_layers[-1] last_layers.pop() if choice == 'q': break