相信各位都在在網上買過東西吧?那麼今天我的主題就是寫個線上購物系統,是不可能的,哈哈(後期確實有這個項目),那麼購物都填寫過快遞地址吧?然後網上查個地址都有地址管理吧? 要求: 1.列印出省、市、縣等多級目錄 2.每一級可以返回到上一級,第一級不能再往上返回 3.可以隨時退出系統 分析: 1.簡單的 ...
相信各位都在在網上買過東西吧?那麼今天我的主題就是寫個線上購物系統,是不可能的,哈哈(後期確實有這個項目),那麼購物都填寫過快遞地址吧?然後網上查個地址都有地址管理吧?
要求:
1.列印出省、市、縣等多級目錄
2.每一級可以返回到上一級,第一級不能再往上返回
3.可以隨時退出系統
分析:
1.簡單的地址管理,那麼不必把全國的地區都寫清楚,做個簡單的範例就行,根據你常識中的地址來寫就行
2.既然是層層跌進的,那麼就有包含關係,這種包含關係怎麼搞呢?換句話用什麼數據類型存儲,我個人喜歡用字典,你們可以隨意
3.可以隨時退出系統,小問題,不用多說了
還是那句話,我希望你已經思考過在看的下麵
同樣的,代碼發佈區在github,傳送門
一共就一個主程式文件,這裡我暫且只用了兩個省份作為範例,設定的三級目錄,當然你可以再設定詳細的目錄。代碼:
#!usr/bin/env python
#-*- coding:utf-8 -*-
# author:yangva
# datetime:2017/12/17 0007 18:16
china_map_dict={
'吉林':{
'長春':{'朝陽區':{},'南關區':{},'寬城區':{},'二道區':{},'綠園區':{},'雙陽區':{},'德惠市':{},'九台市':{},'榆樹市':{},'農安縣':{}},
'吉林市':{'船營區':{},'昌邑區':{},'龍潭區':{},'豐滿區':{},'蛟河市':{},'樺甸市':{},'舒蘭市':{},'磐石市':{},'永吉縣':{}},
'四平':{'鐵西區':{},'鐵東區':{},'公主嶺市':{},'雙遼市':{},'梨樹縣':{},'伊通滿族自治縣':{}},
'遼源':{'龍山區':{},'西安區':{},'東豐縣':{},'東遼縣':{}},
'通化':{'東昌區':{},'二道江區':{},'梅河口市':{},'集安市':{},'通化縣':{},'輝南縣':{},'柳河縣':{}},
'白山':{'渾江區':{},'江源區':{},'臨江市':{},'撫松縣':{},'靖宇縣':{},'長白北韓族自治縣':{}},
'松原':{'寧江區':{},'長嶺縣':{},'乾安縣':{},'扶餘縣':{},'前郭爾羅斯蒙古族自治縣':{}},
'白城':{'洮北區':{},'洮南市':{},'大安市':{},'鎮賚縣':{},'通榆縣':{}},
'延邊州':{'延吉市':{},'圖們市':{},'敦化市':{},'和龍市':{},'琿春市':{},'龍井市':{},'汪清縣':{},'安圖縣':{}},
'長白山管委會':{}
},
'四川':{
'成都':{'錦江區':{},'青羊區':{},'金牛區':{},'武侯區':{},'成華區':{},'青白江區':{},'龍泉驛區':{},'新都區':{},'溫江區':{},'金堂縣':{},'雙流縣':{},'郫縣':{},'大邑縣':{},'蒲江縣':{},'新津縣':{},'都江堰市':{},'彭州市':{},'崇州市':{},'邛崍市':{}},
'自貢':{'自流井區':{},'貢井區':{},'大安區':{},'灘區':{},'榮縣':{},'富順縣':{}},
'攀枝花':{'東區':{},'西區':{},'仁和區':{},'米易縣':{},'鹽邊縣':{}},
'瀘州':{'江陽區':{},'龍馬潭區':{},'納溪區':{},'瀘縣':{},'合江縣':{},'敘永縣':{},'古藺縣':{}},
'德陽':{'旌陽區':{},'廣漢市':{},'什邡市':{},'綿竹市':{},'中江縣':{},'羅江縣':{}},
'綿陽':{'涪城區':{},'游仙區':{},'梓潼縣':{},'三台縣':{},'鹽亭縣':{},'安縣':{},'平武縣':{},'江油市':{},'北川羌族自治縣':{}},
'廣元':{'利州區':{},'昭化區':{},'朝天區':{},'旺蒼縣':{},'青川縣':{},'劍閣縣':{},'蒼溪縣':{}},
'遂寧':{'船山區':{},'安居區':{},'射洪縣':{},'蓬溪縣':{},'大英縣':{}},
'內江':{'市中區':{},'東興區':{},'資中縣':{},'隆昌縣':{},'威遠縣':{}},
'樂山':{'市中區':{},'沙灣區':{},'五通橋區':{},'金口河區':{},'犍為縣':{},'井研縣':{},'夾江縣':{},'沐川縣':{},'峨眉山市':{},'峨邊彞族自治縣':{},'馬邊彞族自治縣':{}},
'南充':{'順慶區':{},'高坪區':{},'嘉陵區':{},'西充縣':{},'南部縣':{},'蓬安縣':{},'營山縣':{},'儀隴縣':{},'閬中市':{}},
'眉山':{'東坡區':{},'彭山區':{},'仁壽縣':{},'丹棱縣':{},'青神縣':{},'洪雅縣':{}},
'宜賓':{'翠屏區':{},'南溪區':{},'宜賓縣':{},'江安縣':{},'長寧縣':{},'高縣':{},'筠連縣':{},'珙縣':{},'興文縣':{},'屏山縣':{}},
'廣安':{'廣安區':{},'前鋒區':{},'鄰水縣':{},'武勝縣':{},'岳池縣':{},'華鎣市':{}},
'達州':{'通川區':{},'達川區':{},'宣漢縣':{},'開江縣':{},'大竹縣':{},'渠縣':{},'萬源市':{}},
'雅安':{'雨城區':{},'名山區':{},'滎經縣':{},'漢源縣':{},'石棉縣':{},'天全縣':{},'蘆山縣':{},'寶興縣':{}},
'巴中':{'巴州區':{},'恩陽區':{},'平昌縣':{},'通江縣':{},'南江縣':{}},
'資陽':{'雁江區':{},'安岳縣':{},'樂至縣':{},'簡陽市':{}},
'阿壩藏族羌族自治州':{'馬爾康縣':{},'金川縣':{},'小金縣':{},'阿壩縣':{},'若爾蓋縣':{},'紅原縣':{},'壤塘縣':{},'汶川縣':{},'理縣':{},'茂縣':{},'松潘縣':{},'九寨溝縣':{},'黑水縣':{}},
'甘孜藏族自治州':{'康定縣':{},'瀘定縣':{},'九龍縣':{},'道孚縣':{},'爐霍縣':{},'甘孜縣':{},'新龍縣':{},'德格縣':{},'白玉縣':{},'石渠縣':{},'色達縣':{},'理塘縣':{},'巴塘縣':{},'鄉城縣':{},'稻城縣':{},'得榮縣':{}},
'涼山彞族自治州':{'西昌市':{},'德昌縣':{},'會理縣':{},'會東縣':{},'寧南縣':{},'普格縣':{},'布拖縣':{},'昭覺縣':{},'金陽縣':{},'雷波縣':{},'美姑縣':{},'甘洛縣':{},'越西縣':{},'喜德縣':{},'冕寧縣':{},'鹽源縣':{},'木里藏族自治縣':{}}
}
}
current_leval = china_map_dict #實現動態迴圈
parent_list = [] #把所有列表父級放進列表
while True:
for key in current_leval:
print(key)
choice = input('請輸入>>>:').strip()
if len(choice) == 0:continue
if choice in current_leval:
parent_list.append(current_leval)
current_leval = current_leval[choice] #進入子級
elif choice == 'back':
if parent_list:
current_leval=parent_list.pop() #取出父級(上一級)
elif choice == 'quit':
print('程式已退出')
break
else:
print('無選項【%s】'%choice)
很簡單,我就不演示了
總結:
1.上面的代碼利用了列表的pop方法,加上迴圈,最巧妙的就是重新賦值,然後while又重新迴圈下去,類似遞歸用法。
2.一樣很簡單的對吧?下一章還有多級目錄的升級版,所以不多說了,需要怎麼優化也不用多說
題外話:有沒有發現前面的項目和現在的項目結合起來,基本可以寫一個功能較全的程式了,具體什麼程式後面再詳解了