1. 程式人生 > 實用技巧 >三級選單

三級選單

三級選單

作業需求

  1. 可以一層一層的進入到所有層 ;
  2. 可以在每層返回上一層 ;
  3. 可以在任意層回退上一層或退出;
# Administrator 2019/6/12 13:41
menu = {
    '北京':{
        '朝陽':{
            '國貿':{},
                'CICC':{},
                'HP':{},
                '渣打銀行':{},
                'CCTV':{},
            },
            '望京':{
                '陌陌':{},
                '賓士':{},
                '360':{},
            },
            '三里屯':{
                '優衣庫':{},
                'apple':{},
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '阿泰包子':{},
            },
            '天通苑':{
                '鏈家':{},
                '我愛我家':{},
            },
            '回龍觀':{},
        },
        '海淀':{
            '五道口':{
                '谷歌':{},
                '網易':{},
                'sohu':{},
                '快手':{},
            },
            '中關村':{
                'youku':{},
                'Iqiyi':{},
                '汽車之家':{},
                '新東方':{},
                'QQ':{},
            },
 
        },
    },
    '上海':{
        '浦東':{
            '陸家嘴':{
                'CICC':{},
                '高盛':{},
                '摩根':{},
            },
        },
        '閔行':{},
        '靜安':{},
    },
    '山東':{
        '濟南':{},
        '德州':{
            '樂陵':{
                '丁務鎮':{},
                '城區':{},
            },
            '平原':{},
        },
        '青島':{},
    },
}
 
floor = menu    #定義當前層為menu,實現動態迴圈;
empty_list = []      #定義一個空列表,儲存所有父級,最後一個元素永遠都是父級;
while True:     #while True 語句中一定要有結束該迴圈的break語句,否則會一直迴圈下去;
    for key in floor:
        print(key)      #列印選單內容
    #讓使用者選擇輸入,strip() 方法用於移除字串頭尾指定的字元(預設為空格或換行符)或字元序列;
    choice = input("請輸入地址>>>【返回/b,退出/q】:").strip()
    if choice == 'q':   #判斷如果使用者輸入q,便break跳出迴圈;
        break
    #判斷使用者如果輸入的字元長度如果為0,便跳出本次迴圈;
    if len(choice) == 0 :   #len() 方法返回物件(字元、列表、元組等)長度或專案個數。
        continue
    if choice in floor:     #如果使用者輸入的是選單裡的內容;
        #在進入下一層之前,把當前層追加到列表中;
        #下一次迴圈時,如果使用者輸入b,就可以直接取列表的最後一個值出來;
        empty_list.append(floor) #append() 方法用於在列表末尾新增新的物件;
        floor = floor[choice]   #改成下一層;
    elif choice == 'b':         #如果使用者輸入b;
        if empty_list:          #判斷列表是否為空;
            #pop() 函式用於移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
            floor = empty_list.pop()    #取出列表最後一個值,因為他就是當前層的父級;
    else:
        print('您輸入有誤!')