1. 程式人生 > 實用技巧 >python初級之路-多級選單

python初級之路-多級選單

前言:

1、實現一個三級選單,例如:省-市-縣

2、可依次選擇進入各級選單,可以選擇返回上一層選單,以及直接退出整個選單

3、所需知識點:列表、字典

思路:

將‘省-市-縣’資料儲存在字典city變數中,根據使用者輸入返回對應子級選單;如果使用者輸入‘b’或者‘B’,就返回上一級選單;輸入‘q’或者‘Q’,則退出整個選單(父級菜單隻有‘q’或者‘Q’選擇)。

實現程式碼:

 1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*- 3 4 city = { # 定義一個'省-市-縣'字典變數 5 '北京': { 6 '東城區': ['東華門', '景山', '交道口', '安定門', '北新橋', '朝陽門', '建國門', 'B & b', 'Q & q'], 7 '朝陽區': ['六裡屯', '八里莊', '三里屯', '和平街', '左家莊', '香河園', '建外', 'B & b', 'Q & q'], 8 '豐臺區': ['清源', '興豐', '
林校路', '觀音寺', '天宮院', '高米店', '榮華', '博興', 'B & b', 'Q & q'], 9 '海淀區': ['海淀', '青龍橋', '清華園', '燕園', '西三旗', '甘家口', '萬壽路', 'B & b', 'Q & q'], 10 '通州區': ['中倉', '新華', '北苑', '玉橋', '潞源', '通運', '永順', '梨園', 'B & b', 'Q & q'], 11 '大興區': ['觀音寺', '林校路', '清源', '天宮院', '博興
', '榮華', '青雲店鎮', 'B & b', 'Q & q'], 12 '昌平區': ['城北', '南口', '馬池口', '沙河', '東小口', '回龍觀', 'B & b', 'Q & q'], 13 'B & b': '返回', 14 'Q & q': '退出' 15 }, 16 '上海': { 17 '黃浦區': ['南京東路', '外灘', '瑞金二路', '豫園', '老西門', '小東門', '五里橋', 'B & b', 'Q & q'], 18 '普陀區': ['桃浦鎮', '萬里', '甘泉路', '石泉路', '長壽路', '宜川路', '長征鎮', 'B & b', 'Q & q'], 19 '浦東新區': ['曹路鎮', '金橋鎮', '高行鎮', '高東鎮', '張江鎮', '三林鎮', '惠南鎮', 'B & b', 'Q & q'], 20 '楊浦區': ['定海路', '平涼路', '江浦路', '四平路', '控江路', '長白新村', '殷行', 'B & b', 'Q & q'], 21 '寶山區': ['羅店鎮', '大場鎮', '楊行鎮', '月浦鎮', '羅涇鎮', '顧村鎮', '高境鎮', 'B & b', 'Q & q'], 22 '徐彙區': ['湖南路', '天平路', '楓林路', '徐家彙', '康健新村', '虹梅路', '田林', 'B & b', 'Q & q'], 23 'B & b': '返回', 24 'Q & q': '退出' 25 }, 26 '深圳': { 27 '羅湖區': ['桂園', '黃貝', '東門', '南湖', '東湖', '蓮塘', '清水河', 'B & b', 'Q & q'], 28 '福田區': ['園嶺', '南園', '福田', '梅林', '香蜜湖', '蓮花', '華強北', 'B & b', 'Q & q'], 29 '寶安區': ['新安', '西鄉', '航城', '福永', '福海', '沙井', '新橋', '鬆崗', 'B & b', 'Q & q'], 30 '龍華區': ['觀湖', '民治', '龍華', '大浪', '福城', '觀瀾', 'B & b', 'Q & q'], 31 '南山區': ['南山', '南頭', '西麗', '沙河', '蛇口', '桃源', 'B & b', 'Q & q'], 32 'B & b': '返回', 33 'Q & q': '退出' 34 }, 35 'Q & q': '退出' 36 } 37 38 # print(city['深圳'].keys()) 39 while True: 40 print() 41 print(list(city.keys())) # 將一級選單給使用者參考輸入 42 ct = input("請輸入要查詢的城市:").strip() 43 if ct in city: # 判斷使用者輸入是否在一級選單中,如果是則列印二級選單選項 44 print() 45 print(list(city[ct].keys())) 46 while True: 47 area = input("請輸入要查詢的地區:") 48 if area in city[ct].keys(): 49 print() 50 print(list(city[ct][area])) 51 while True: 52 street = input("請輸入要查詢的街道:") 53 if street in city[ct][area]: 54 print("您好,歡迎來到%s市%s%s街道。" % (ct, area, street)) 55 quit() 56 elif street == 'b' or street == 'B': 57 print("返回上一層。") 58 break 59 elif street == 'q' or street == 'Q': 60 print("退出查詢,歡迎再次使用。") 61 quit() 62 else: 63 print("未查詢到%s市%s%s街道,請重新輸入。" % (ct, area, street)) 64 elif area == 'b' or area == 'B': 65 print("返回上一層。") 66 break 67 elif area =='q' or area == 'Q': 68 print("退出查詢,歡迎再次使用。") 69 quit() 70 else: 71 print("未查詢到%s市%s,請重新輸入。" % (ct, area)) 72 elif ct == 'q' or ct == 'Q': 73 print('退出查詢,歡迎再次使用。') 74 quit() 75 else: 76 print("您輸入的城市暫未入庫,請重新輸入。")