三级菜单(低端版VS高端版)

>>>低端版

menu={'山西':
             {'太原':
                     {'迎泽':['柳巷','五一广场','太原站'],
                      '小店':['山西财经大学','山西大学','武宿机场'],
                      '晋源':['晋祠','蒙山大佛''山西省图书馆']
                      },
              '吕梁':
                     {'柳林':['联盛中学','龙花垣'],
                      '离石':['东关','滨河路的疯狗']
                      },
              '大同':
                     {'南郊':['大同大学','方特'],
                      '云冈':['云冈石窟'],
                      }
              },
      '北京':
             {'朝阳':
                     {'国贸':['渣打银行','CCTV'],
                      '望京':['陌陌','奔驰','360'],
                      '三里屯':['优衣库','苹果']
                      },
              '海淀':
                     {'五道口':['清华','快手'],
                      '中关村':['汽车之家','新东方'],
                      },
              '昌平':
                     {'沙河':['老男孩','某鸟'],
                      '天通苑':['链家'],
                      '回龙观':['回龙观公园']
                      }
              },
      '陕西':
             {'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
                      '长安区':['翠华山','杨虎城陵园'],
                      },
              '榆林':{'榆阳区':['世纪广场'],
                      '吴堡县':['黄河大道']
                     }
             }
      }
exit_flag=False
while exit_flag==False:
    for key in menu:
        print(key)
    choice=input('>>请选择进入下一层或选择exit退出主菜单:').strip()
    if choice=='exit':
        break
    elif choice in menu:
        while exit_flag==False:
            for key2 in menu[choice]:
                print(key2)
            choice2=input('>>请选择进入下一层或者选择back返回上一层,选择exit退出主菜单:').strip()
            if choice2=='back':
                break
            elif choice2=='exit':
                exit_flag=True
            elif choice2 in menu[choice]:
                while exit_flag==False:
                    for key3 in menu[choice][choice2]:
                        print(key3)
                    choice3=input('>>请选择进入下一层或选择back返回上一层,选择exit退出主菜单:').strip()
                    if choice3=='back':
                        break
                    elif choice3=='exit':
                        exit_flag=True
                    elif choice3 in menu[choice][choice2]:
                        for i in menu[choice][choice2][choice3]:
                            print(i)
                        while exit_flag==False:
                            choice4=input('已到达最后一层,请选择back返回上一层或选择exit退出主菜单>>:').strip()
                            if choice4=='back':
                                break
                            elif choice4 == 'exit':
                                exit_flag = True

>>>高端版
menu={'山西':
             {'太原':
                     {'迎泽':['柳巷','五一广场','太原站'],
                      '小店':['山西财经大学','山西大学','武宿机场'],
                      '晋源':['晋祠','蒙山大佛''山西省图书馆']
                      },
              '吕梁':
                     {'柳林':['联盛中学','龙花垣'],
                      '离石':['东关']
                      },
              '大同':
                     {'南郊':['大同大学','方特'],
                      '云冈':['云冈石窟'],
                      }
              },
      '北京':
             {'朝阳':
                     {'国贸':['渣打银行','CCTV'],
                      '望京':['陌陌','奔驰','360'],
                      '三里屯':['优衣库','苹果']
                      },
              '海淀':
                     {'五道口':['清华','快手'],
                      '中关村':['汽车之家','新东方'],
                      },
              '昌平':
                     {'沙河':['老男孩','某鸟'],
                      '天通苑':['链家'],
                      '回龙观':['回龙观公园']
                      }
              },
      '陕西':
             {'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
                      '长安区':['翠华山','杨虎城陵园'],
                      },
              '榆林':{'榆阳区':['世纪广场'],
                      '吴堡县':['黄河大道']
                     }
             }
      }
current_layer=menu                  #设置当前层的初始值为menu
choiced_layer=[]                    #建立一个已选层列表
while True:
    for key in current_layer:
        print(key)                  #打印当前层信息
    choice=input('>>>输入名字进入下一层,back返回上一层,exit退出:').strip()
    if choice in current_layer:
        choiced_layer.append(current_layer)    #把当前层加入已选层列表
        current_layer=current_layer[choice]    #当前层进入已选下一层
    elif choice=='back':
        if choiced_layer:                       #如果列表不为空,执行以下操作
            current_layer = choiced_layer.pop() #将最后选择的层从已选层取出来,并赋给当前层
    elif choice=='exit':
        break
    else:
        print('无此项')
原文地址:https://www.cnblogs.com/Finance-IT-gao/p/10105503.html