Python編寫地區選擇-Dict

#!-*- coding:utf-8 -*-
"""
Mut_select of the place name.

1.1-3 to Three layer
2."q" to exit.
3."b" to back.
4.other words to retry.
5.add the values in the dict,no infact
需要改進:
在交互界面增加和刪除詞典裏的值
"""
PlaceName = {"遼寧": {"大連": ("高新", "中山"), "瀋陽": ("鐵西", "渾南"), "葫蘆島": ("蓮山", "興城")},
             "吉林": {"長春": ("大窪", "高天"), "四平": ("二道河", "路陽"), "通遼": ("通化", "黑道")},
             "黑龍江": {"哈爾": ("坪山", "故陽"), "大慶": ("黑油", "千多"), "漠河": ("俄國", "最北"), "毅力": ("堅強", "努力")}}


def province(place_name):                                       # 定義選擇菜單
    province_list = []
    j = 1
    for i in place_name.keys():                                 # 讀取詞典裏的 鍵名
        province_list = province_list+[i]
        print(j, '.', i)                                         # 在屏幕上打印選擇菜單
        j += 1
    return province_list                                         # 返回選擇菜單的list


def judge_input(input_list):                                    # 判斷輸入
    pro_name = ""
    pr_value = input("Please select number,press 'q' to exit:")     # 獲取輸入的選項值
    if ('1' <= pr_value <= str(len(input_list))) and len(pr_value) == 1:         # 判斷選擇城市
        pro_name = input_list[int(pr_value)-1]                           # 動態賦值,詞典加減項,對本程序無影響
        print("您選擇%s,以下是它的1下屬區域:" % pro_name)              # 打印
        return pro_name                                                  # 返回選擇省/市的名字
    elif pr_value == 'q' or pr_value == 'Q':                            # 判斷退出,返回值0,供主程序判斷
        print("You quit the program!")
        return '0'
    elif pr_value == 'b' or pr_value == 'B':                            # 判斷返回,返回值1,供主程序判斷
        return '-1'
    else:
        return


while True:                                                         # 無限循環,直到輸入q/Q
    ProvinceLists = province(PlaceName)                              # 調用讀取詞典鍵名函數,返回省份list
    return_value_p = judge_input(ProvinceLists)                      # 調用輸入判斷函數,返回輸入省值
    if return_value_p == '0':                                       # 0對應q/Q ,結束程序,第一級菜單b/B無意義,無須處理
        break
    elif return_value_p in PlaceName:                                # 判斷輸入鍵值存在字典裏
        CityName = PlaceName[return_value_p]                         # 讀取選擇省份值,存入
        while True:                                                 # 進入選擇市級菜單
            CityLists = province(CityName)                           # 調用讀取詞典鍵名函數,返回城市list
            return_value_c = judge_input(CityLists)                  # 調用輸入判斷函數,返回輸入城市值
            if return_value_c == '0':                                # 0對應q/Q,賦值,滿足外層結束條件,結束程序
                return_value_p = '0'
                break
            elif return_value_c in CityName:                         # 判斷輸入鍵值存在子字典裏
                CountryList = CityName[return_value_c]                # 縣級元組,存入
                for name in CountryList:                             # 遍歷元組值,輸出
                    print(name)
                while True:                                         # 最下級菜單的輸入判斷
                    last_value = input("Please press 'b' to return or 'q' to quit:")
                    if last_value == 'q' or last_value == 'Q':     # q/Q設置上兩級循環的退出條件,退出程序
                        return_value_c = '0'
                        return_value_p = '0'
                        break
                    elif last_value == 'b' or last_value == 'B':   # b/B退出循環
                        break
                    else:
                        continue                                    # 輸入其它選項,結束本次循環
            elif return_value_c == '-1':                            # 城市層級,讀取b/B,結束城市循環,返回省級
                break
            if return_value_p == '0':                               # 讀取退出程序的條件,退出
                break
        if return_value_p == '0':                                   # 讀取退出程序的條件,退出
            break
print('本次查詢已經結束!')

#print(City["遼寧"]["瀋陽"])


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章