“三级菜单“的三种解决办法

menu = {
    "安徽": {
        "六安": {
            "金寨": [],
            "舒城": [],
            "霍山": [],
        },
        "淮南": {
            "田家庵": [],
            "凤台": [],
            "寿县": [],
        }
    },
    "江苏": {
        "无锡": {
            "宜兴": [],
            "江阴": []
        },
        "南京": {
            "鼓楼": [],
            "玄武": [],
            "雨花": [],
        },
    },
}
#  堆栈方法
l = [menu]
while l:
    for k in l[-1]:print(k)
    key = input("input>>>")
    if key in l[-1].keys() and l[-1][key]:
        l.append(l[-1][key])
    elif key == "b":
        l.pop()
    elif key == "q":
        break
    else:
        continue

2.递归方法

def threemenu(menu):
        递归
    while True:
        for k in menu:print(k)
        key = input("please input your choice:").strip()
        if key == "b" or key == "q": return key
        elif key in menu.keys() and menu[key]:
            ret = threemenu(menu[key])
            if ret == "q": return "q"

第三种方法

current_layer = menu
back_flag = False
quit_flag = False

while 1:
    for key in current_layer:
        print(key)
    choice = input(">>>:").strip()
    if len(choice) == 0:
        continue
    if choice in current_layer:
        current_layer = current_layer[choice]
    elif choice == "q":
        break
    elif choice == "b":
        pass
    else:
        print("无此项")

 

posted @ 2019-02-15 12:22  飞蝎儿  阅读(252)  评论(0编辑  收藏  举报