學習Python的第二十天【三級菜單】高級版

------------恢復內容開始------------app

三級菜單要求:
1.能夠一層一層的進入到全部層;
2.能夠在每一層返回上一層;輸入b
3.能夠在任意層退出 主菜單;輸入q

#初級:(原始代碼)
#__author:"hanhankeji"
#date: 2019/12/11

menu = {
    "北京":{
        "朝陽":{
            "國貿":{
                "CICC":{},
                "hp":{},
                "CCTV":{},
            },
        },
        "望京":{
            "momo":{},
            "奔馳":{},
            "360":{},
            "聯邦":{},
        },
        "三里屯":{
            "優衣庫":{},
            "大使館":{},
            "酒吧":{},
            "蘋果":{},
        },
        "昌平":{
            "沙河":{
                "老男孩":{},
                "包子鋪":{},
            },
            "天通苑":{
                "鏈家":{},
                "我愛我家":{},
                "汽修廠":{},
            },
            "回龍觀":{},
            "海定":{
                "五道口":{
                    "谷歌":{},
                    "搜狐":{},
                    "網易":{},
                    "搜狗":{},
                    "快手":{},
                    "清華":{},
                    "北大":{},
                },
                "中關村":{
                    "優酷":{},
                    "愛奇藝":{},
                    "騰訊":{},
                    "汽車之家":{},
                    "新東方":{},
                    "炸雞店":{},
                    "南翔":{},
                },
            },
        },
    },
    "上海":{
        "浦東區":{
            "陸家嘴":{
                "CICC":{},
                "高盛":{},
                "摩根":{},
            },
            "外灘":{},
            "東方明珠":{},
        },
        "閘北區":{},
        "黃浦區":{},
        "徐彙區":{},
        "嘉定區":{},
    },
    "山東":{
        "濟南":{
            "市中區":{},
            "歷下區":{},
            "天橋區":{},
            "桂英渠":{},
            "長清區":{},
        },
        "德州":{},
        "青島":{},
        "泰安":{},
        "棗莊":{},
    },
    "江蘇":{
        "南京市":{},
        "蘇州市":{},
        "常州":{},
        "張家港市":{},
        "大豐市":{},
    },
    "重慶":{},
    "浙江":{},
}
back_flag = False
exit_falg = False
while not  back_flag and not exit_falg :
    for i in (menu):
        print(i)
    choice = input("輸入你的省>>:").strip()
    if choice == "q":
        exit_falg = True
    if  choice in menu :
        while not back_flag and not exit_falg:
            for j in menu[choice]:
                print(j)
            choice2 = input("輸入你的縣級>>:").strip()
            if choice2 == "q":
                exit_falg = True
            if choice2 == "b":
                back_flag = True
            if choice2 in  menu[choice]:
                while not back_flag and not exit_falg:
                    for k in menu[choice][choice2]:
                        print(k)
                    choice3 = input("輸入你的市級>>:")
                    if choice3 == "q":
                        exit_falg = True
                    if choice3 == "b":
                        back_flag = True
                    if choice3 in menu[choice][choice2]:
                        while not back_flag and not exit_falg:
                            for l in menu[choice][choice2][choice3]:
                                print(l)
                            choice4 = input("輸入區級>>:").strip()
                            print(" last leavel!")
                            if choice4 == "b" :
                                back_flag = True
                            if choice4 == "q" :
                                exit_falg = True
                        else:
                            back_flag =False
                else:
                    back_flag = False
        else:
            back_flag = False

 

高級版本:oop

 

#__author:"hanhankeji"
#date: 2019/12/17

menu = {
    "北京":{
        "朝陽":{
            "國貿":{
                "CICC":{},
                "hp":{},
                "CCTV":{},
            },
        },
        "望京":{
            "momo":{},
            "奔馳":{},
            "360":{},
            "聯邦":{},
        },
        "三里屯":{
            "優衣庫":{},
            "大使館":{},
            "酒吧":{},
            "蘋果":{},
        },
        "昌平":{
            "沙河":{
                "老男孩":{},
                "包子鋪":{},
            },
            "天通苑":{
                "鏈家":{},
                "我愛我家":{},
                "汽修廠":{},
            },
            "回龍觀":{},
            "海定":{
                "五道口":{
                    "谷歌":{},
                    "搜狐":{},
                    "網易":{},
                    "搜狗":{},
                    "快手":{},
                    "清華":{},
                    "北大":{},
                },
                "中關村":{
                    "優酷":{},
                    "愛奇藝":{},
                    "騰訊":{},
                    "汽車之家":{},
                    "新東方":{},
                    "炸雞店":{},
                    "南翔":{},
                },
            },
        },
    },
    "上海":{
        "浦東區":{
            "陸家嘴":{
                "CICC":{},
                "高盛":{},
                "摩根":{},
            },
            "外灘":{},
            "東方明珠":{},
        },
        "閘北區":{},
        "黃浦區":{},
        "徐彙區":{},
        "嘉定區":{},
    },
    "山東":{
        "濟南":{
            "市中區":{},
            "歷下區":{},
            "天橋區":{},
            "桂英渠":{},
            "長清區":{},
        },
        "德州":{},
        "青島":{},
        "泰安":{},
        "棗莊":{},
    },
    "江蘇":{
        "南京市":{},
        "蘇州市":{},
        "常州":{},
        "張家港市":{},
        "大豐市":{},
    },
    "重慶":{},
    "浙江":{},
}
current_layer = menu #實現動態循環
parent_layers = [] #保存全部父級, 最後一個元素永遠都是父級
# parent_list = []
while True:
    for i in current_layer:
        print(i)
    choice = input("請輸入選項>>:").strip()
    if len(choice) == 0 : continue
    if choice in current_layer :
        # parent_layers = current_layer[choice] #改以前至關於父親
        parent_layers.append(current_layer)  #在進入下一層以前,把當前層(也就是下一層的父級)追加到列表中
        #下一次loop,當用戶選擇b的時候後,就能夠直接取列表的最後一個值出來就OK了·
        current_layer = current_layer[choice]  #改爲了子層
    elif choice == "b":
        #current_layer = parent_layers.pop()
        if parent_layers : #[]
            current_layer = parent_layers.pop()#取出列表的最後一個值
        # current_layer = parent_layers  #把子層改爲父親
    elif choice == "q" :
        break
    else:
        print("沒有這個選項,請確認!")

 

 

------------恢復內容結束------------spa

相關文章
相關標籤/搜索