1. 程式人生 > >python全棧筆記-day03-chapter2 homework1_menu

python全棧筆記-day03-chapter2 homework1_menu

# #多級選單
# 需求:
# 現有省、市、縣3級結構,要求程式啟動後,允許使用者可依次選擇進入各子選單
# 可在任意一級選單返回上一級
# 可在任意一級選單退出程式
# 所需知識點:列表、字典

location = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '網易':{},
                'google':{}
            },
            '中關村':{
                '愛奇藝':{},
                '汽車之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龍觀':{},
        },
        '朝陽':{},
        '東城':{},
    },
    '上海':{
        '閔行':{
            "人民廣場":{
                '炸雞店':{}
            }
        },
        '閘北':{
            '火車戰':{
                '攜程':{}
            }
        },
        '浦東':{},
    },
    '山東':{},
}

current_layer = location#記錄當前層
layers = [ ]#記錄進入過的層

while True:
    for k in current_layer:
        print(k)
    choice = input('>>')
    if not choice: continue
    if choice in current_layer:
        if len(current_layer[choice]) != 0:#還有下一層
            layers.append(current_layer)
            current_layer = current_layer[choice]#進入下一層
        else:
            print('您已在底層')
    elif choice == 'b':
        if len(layers) != 0:
            current_layer = layers.pop()
        else:
            print('您已在首層')
    elif choice == 'q':
        print('bye')
        break
    else: print('不存在')



#非常多重複程式碼
# exit_flag1 = False#標誌位1
# while not exit_flag1:#選擇省級
#     for k in location:  # 輸出省級menu
#         print(k)
#     choice1 = input('請輸入(b:返回上一級,q:退出):')
#     if not choice1: continue#如果輸入回車(沒輸入),則繼續輸入
#     elif choice1 == 'q':#判斷輸入是否為q
#         exit_flag1 = True
#     elif choice1 == 'b':
#         print('您已在第一級')
#     else:
#         exit_flag2 = False  # 標誌位2
#         if choice1 in location:#如果該名稱存在
#             while not exit_flag2:#選擇市級
#                 for i in location[choice1]:  # 輸出市級menu
#                     print(i)
#                 choice2 = input('請輸入(b:返回上一級,q:退出):')
#                 if not choice2: continue#如果輸入回車(沒輸入),則繼續輸入
#                 elif choice2 == 'q':  # 判斷輸入是否為q
#                     exit_flag1 = True
#                     exit_flag2 = True
#                 elif choice2 == 'b':
#                     exit_flag2 =True
#                 else:
#                     exit_flag3 = False  # 標誌位3
#                     if choice2 in location[choice1]:#如果該名稱存在
#                         while not exit_flag3:
#                             for n in location[choice1][choice2]:  # 輸出縣級menu
#                                 print(n)
#                             choice3 = input('請輸入(b:返回上一級,q:退出):')
#                             if choice3 == 'q':  # 判斷輸入是否為q
#                                 exit_flag1 = True
#                                 exit_flag2 = True
#                                 exit_flag3 = True
#                             elif choice3 == 'b':
#                                 exit_flag3 = True
#                             else:
#                                 if choice3 in location[choice1][choice2]:
#                                     print('您已選擇',choice1,choice2,choice3)
#                                     exit_flag1 = True
#                                     exit_flag2 = True
#                                     exit_flag3 = True
#                                 else:
#                                     print('該名稱不存在')
#                                     continue
#                     else:
#                        print('該名稱不存在')
#                        continue
#         else:
#             print('該名稱不存在')
#             continue