使用python實(shí)現(xiàn)省市三級(jí)菜單效果
地區(qū)分三層結(jié)構(gòu)例如:
大中華地區(qū)一級(jí)劃分:
華東
華中
華北
西南
特別行政區(qū)
華南
-------------------------------------------------
請(qǐng)輸入你要查看的大中華地區(qū)名字:華中
------------------包含的省名字二級(jí):-----------------
湖北
湖南
河南
-------------------------------------------------
請(qǐng)輸入你要查看的省名字:湖北
--------------包含的城市名三級(jí):-------------------
程序大概的思路和邏輯:
1 將大中華地區(qū)劃用字典列表來(lái)構(gòu)造,用key取省或者地市列表,用for遍歷顯示字典或者列表的元素
2 根據(jù)整個(gè)字典的key,得到省列表,遍歷打印省的名字列表
3 設(shè)置用于跳出外循環(huán)的flag(跳出嵌套循環(huán))
4 兩層嵌套循環(huán),外循環(huán)for指定3次固定循環(huán),3次輸入省名字錯(cuò)誤,程序退出(在外循環(huán)for后,通過(guò)else來(lái)實(shí)現(xiàn))
內(nèi)循環(huán)while True是死循環(huán),不指定次數(shù)(地市名字輸入錯(cuò)誤后,會(huì)一直要求輸入,直到輸入正確為止),通過(guò)break退出內(nèi)循環(huán)
5 通過(guò)整個(gè)字典的key得到省列表,通過(guò)省字典的key得到地市列表,遍歷打印地市的名字列表
6 判斷輸入的地市是否在省字典中,在的話,通過(guò)省字典的key,for遍歷打印城市的名字列表不在的話,提示"輸入的省名字不對(duì),請(qǐng)重新輸入",continue跳出當(dāng)次迭代(循環(huán)),繼續(xù)輸入省名字還在內(nèi)循環(huán)while中
7 打印城市表后,2個(gè)選擇,1是退出整個(gè)程序(2個(gè)嵌套循環(huán)都退出),2是回到上一級(jí)別菜單(只需要退出內(nèi)循環(huán)的當(dāng)前迭代)
8 回到上一級(jí)別菜單(只退出內(nèi)循環(huán)while) 判斷用戶輸入的是否是"b",是的話,continnue 退出內(nèi)循環(huán)的當(dāng)前迭代,開(kāi)始內(nèi)循環(huán)下次迭代
9 退出整個(gè)程序(2個(gè)嵌套循環(huán)都退出) 判斷用戶輸入的是否是"q",是的話,先將flag變成True,然后break退出while內(nèi)循環(huán)
10 再做一個(gè)判斷,判斷flag是否是True,如果是的話,break退出for外循環(huán),至此,退出整個(gè)程序(2個(gè)嵌套循環(huán)都退出)
流程圖:
代碼:
#!/user/binenv python3 # -*- coding:utf-8 -*- ''' Created on: 2015年1月16日 @author: 呂毅 Email: 371725153@qq.com Version: 1.0 ''' china_map ={ "華南":{ "廣東":["廣州市","佛山市","深圳市","東莞市"], "廣西":["南寧市","柳州市","桂林市","北海市"], "海南":["??谑?,"三亞市","三沙市","儋州市"] }, "華東":{ "上海":["黃浦區(qū)","盧灣區(qū)","徐匯區(qū)","長(zhǎng)寧區(qū)","普陀區(qū)"], "安徽":["合肥市","蕪湖市","淮南市","馬鞍山市"], "江蘇":["南京市","無(wú)錫市","徐州市","常州市","蘇州市"] }, "華北":{ "北京":["東城區(qū)","西城區(qū)","朝陽(yáng)區(qū)","豐臺(tái)區(qū)","石景山區(qū)","海淀區(qū)"], "山西":["太原市","大同市","陽(yáng)泉市","長(zhǎng)治市"], "河北":["石家莊市","唐山市","秦皇島市","邢臺(tái)市"] }, "華中":{ "湖北":["武漢市","黃石市","十堰市","十堰市"], "河南":["鄭州市","開(kāi)封市","洛陽(yáng)市","平頂山市"], "湖南":["長(zhǎng)沙市","株洲市","衡陽(yáng)市","邵陽(yáng)市"] }, "西南":{ "重慶":["萬(wàn)州區(qū)","涪陵區(qū)","渝中區(qū)","大渡口區(qū)"], "四川":["成都市","自貢市","攀枝花市","德陽(yáng)市"], "貴州":["貴陽(yáng)市","六盤(pán)水市","遵義市","安順市"], }, "特別行政區(qū)":{ "香港":["屯門(mén)","彎仔","北角","西貢"], "澳門(mén)":["花地瑪堂區(qū)","圣安多尼堂區(qū)","大堂區(qū)","望德堂區(qū)"], }, } print ("-------------------------------------------------") print ("+ +") print ("+ +") print ("+ 歡迎來(lái)到大中華地區(qū)查詢系統(tǒng)地 +") print ("+ +") print ("+ +") print ("-------------------------------------------------") print ("大中華地區(qū)一級(jí)劃分:") for i in china_map: #遍歷字典的key,列出大中華地區(qū)的名字 print (i) print ("-------------------------------------------------") jump_flag = False #用于跳出外循環(huán) for i in range(3): #外循環(huán),指定循環(huán)3次,3次外循環(huán)完了,就退出程序 greater_china_name = input("請(qǐng)輸入你要查看的大中華地區(qū)名字:") if greater_china_name in china_map: #檢查輸入的地區(qū)是否在地圖中,如果地區(qū)名字3次輸入錯(cuò)誤,程序退出 gc_name = china_map[greater_china_name] province_name = gc_name.keys()#使用輸入的信息作為key,取出省信息,存在字典中 while True: #內(nèi)循環(huán),死循環(huán),不指定循環(huán)次數(shù),通過(guò)break或者flag跳出 print ("------------------包含的省名字二級(jí):-----------------") #分隔線 for i in province_name: #遍歷列表,取出省名字,打印出來(lái) print (i) print ("-------------------------------------------------") #分隔線 sheng_name_input = input("請(qǐng)輸入你要查看的省名字:") if sheng_name_input in province_name: #判斷輸入的省名字是否在地區(qū)列表中 shi_name = china_map[greater_china_name][sheng_name_input] #取出省中有哪些市,存在列表中 print ("--------------包含的城市名三級(jí):-------------------") #分隔線 for i in shi_name: #遍歷列表,取出地區(qū)市名字,打印出來(lái) print (i) print ("------------------------------------------------") #分隔線 if sheng_name_input not in province_name: #如果輸入的省名字不在在地區(qū)列表中 print ("輸入的省名字不對(duì),請(qǐng)重新輸入") continue #跳出當(dāng)次迭代,開(kāi)始下一次迭代循環(huán),直到地市名字輸入正確為止(不停的要求輸入) back_or_quit = input("請(qǐng)問(wèn)是否退出?按b:Back是返回上一級(jí)菜單;按q:Exit是退出整個(gè)程序") #顯示完地區(qū)市后,就要退出程序了,一個(gè)是全部退出,一個(gè)是返回上一級(jí)菜單 if back_or_quit == "q": jump_flag = True #用于跳出外循環(huán) break #跳出while內(nèi)循環(huán) if back_or_quit == "b": continue # 跳出當(dāng)次迭代,開(kāi)始下一次迭代循環(huán),重新輸入省處,返回上一步 print ("你輸入的信息有誤,請(qǐng)重新輸入") if jump_flag: #跳出外循環(huán)的條件滿足 break #跳出外循環(huán) else:#上面的3次for循環(huán)正常執(zhí)行完畢,else才會(huì)執(zhí)行,如果是不正常退出(break),else不會(huì)執(zhí)行 print ("3次輸入錯(cuò)誤,程序退出")
相關(guān)文章
淺談python中的@以及@在tensorflow中的作用說(shuō)明
這篇文章主要介紹了淺談python中的@以及@在tensorflow中的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python數(shù)據(jù)類(lèi)型中的“冒號(hào)“[::]——分片與步長(zhǎng)操作示例
這篇文章主要介紹了Python數(shù)據(jù)類(lèi)型中的“冒號(hào)“[::]——分片與步長(zhǎng)操作,結(jié)合實(shí)例形式分析了Python基本數(shù)據(jù)類(lèi)型中的分片與步長(zhǎng)使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Python 執(zhí)行字符串表達(dá)式函數(shù)(eval exec execfile)
今天在網(wǎng)上搜尋一些應(yīng)用的例子時(shí),發(fā)現(xiàn)有人用TK僅僅幾行代碼就寫(xiě)了個(gè)簡(jiǎn)易的計(jì)算器,驚為天人?;貞浧饎倢W(xué)軟件技術(shù)基礎(chǔ)時(shí)編寫(xiě)簡(jiǎn)易計(jì)算器的艱辛,頓時(shí)淚流滿面2014-08-08python?魔法方法之?__?slots?__的實(shí)現(xiàn)
本文主要介紹了python?魔法方法之?__?slots?__的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Python中使用第三方庫(kù)xlrd來(lái)寫(xiě)入Excel文件示例
這篇文章主要介紹了Python中使用第三方庫(kù)xlrd來(lái)寫(xiě)入Excel文件示例,本文講解了安裝xlwt、API介紹、使用xlwt寫(xiě)入Excel文件實(shí)例,需要的朋友可以參考下2015-04-04