python打怪之路【第三篇】:利用Python实现三级菜单

程序: 利用Python实现三级菜单

要求:
  打印省、市、县三级菜单
  可返回上一级
  可随时退出程序

coding:

menu = {
    '北京':{
        '朝阳':{
            '国贸':{
                'CICC':{},
                'HP':{},
                '渣打银行':{},
                'CCTV':{},
            },
            '望京':{
                '陌陌':{},
                '奔驰':{},
                '360':{},
            },
            '三里屯':{
                '优衣库':{},
                'apple':{},
            },
        },'海淀':{
            "五道口":{
                "谷歌":{},
                "网易":{},
                "Sohu":{},
                "Sogo":{},
                "快手":{},
            },
            "中关村":{
                "youku":{},
                "Iqiyi":{},
                "汽车之家":{},
                "新东方":{},
                "QQ":{},
            }
        },
    },
    '上海':{
        "浦东":{
            "陆家嘴":{
                "CICC":{},
                "高盛":{},
                "摩根":{},
            },
            "黄埔":{},
        },
        "闵行":{},
        "静安":{},
    }
}

current_layer = menu  #实现动态循环
parent_layers = []  #保存所有父级,最后一个元素永远都是父亲级
while True:
    for key in current_layer:
        print(key)
    choice = input("请输入项,b返回上一级,q退出!>>>:").strip()
    if len(choice) == 0:continue
    if choice in current_layer:
        parent_layers.append(current_layer)  #在进入下一层之前,把当前层(也就是下一层的父级)
        #下一次loop,当用户选择b的时候,就可以直接取列表的最后一个值出来就OK了
        current_layer = current_layer[choice]  #将当前层改成了子层
    elif choice == "b":
        if parent_layers:
            current_layer = parent_layers.pop()  #取出列表的最后一个值,因为它就是当前层的父级
    elif choice == "q":  #输入q时,退出程序
        exit()
    else:
        print("无此项")
原文地址:https://www.cnblogs.com/wooya/p/5807488.html