您好,登錄后才能下訂單哦!
從學習Python來,老師布置了一次作業(yè),就是完成對菜單的功能,輸入一個省份,進而能查詢省份下的縣市,如果要繼續(xù)查看直接輸入市縣就進一步查看,如果要返回直接輸入提示數字即可:
代碼如下:
#!/usr/bin/env python #-*- coding:utf-8 -*- provice = { "江蘇省":{"蘇州市":{'工業(yè)園區(qū)','姑蘇區(qū)','吳中區(qū)'},"無錫市":{'錫山區(qū)','新區(qū)','南塘區(qū)'}}, "湖北省":{"武漢市":{'江漢區(qū)','江岸區(qū)','洪山區(qū)'},"宜昌市":{'夷陵區(qū)','枝江市','西陵區(qū)'}}, "浙江省":{"杭州市":{'上城區(qū)','下城區(qū)','拱墅區(qū)'},"湖州市":{'南潯區(qū)','吳興區(qū)','安吉縣'}}, "安徽省":{"合肥市":{'廬陽區(qū)','蜀山區(qū)','瓊海區(qū)'},"蕪湖市":{'鳩江區(qū)','新蕪區(qū)','繁昌區(qū)'}} } for i in range(3):#循環(huán)3次防止無限調用 print "\033[31;1m----------行政區(qū)劃圖---------------\033[0m" for pro in provice.keys():#獲取省信息列表,這里可以將provice.keys()賦值給某個一變量,如sheng_name_list = provice.keys(),然后再對sheng# _name_list進行遍歷 print "\033[29;1m ============%s=============\033[0m" % pro#打印省份名字 print "\033[34;1m----------------------------------------------------\033[0m" proname = raw_input("請輸入要查看省份的名字:") jump_up_flag = False #定義標志位用來跳出整個循環(huán) if proname not in provice.keys():#判斷輸入省份名字如果不在地圖中 continue#跳出本次循環(huán),回到循環(huán)開頭 else:#如果在地圖列表中則進行如下遍歷操作 print "\033[33;1m %s包含如下城市:\033[0m" %(proname) for s_name in provice[proname].keys():#遍歷省份列表然后打印輸出 print "\033[32;1m %s \033[0m" %(s_name)#輸出省份名字列表 while True: cs_name = raw_input("輸入要查看的城市名字:") chengshi_list = provice[proname].keys() if cs_name in chengshi_list: for area in provice[proname][cs_name]: print "\033[32;1m %s \033[0m" %(area) print "\033[31;1m-----------------------------\033[0m" else: print "\033[31;1m你輸入的城市名\033[34;1m %s \033[0m\033[31;1m不存在請重新輸入!\033[0m" % (cs_name) continue jump_tag = raw_input("\033[32;1m請問是否退出:1 退出、2 返回最上層,任意輸入返回上一層:\033[0m") """ 判斷用戶的輸入:如果輸入1則將jump_up_flag 置為True然后跳出while循環(huán),返回到上級目錄,在上一層代碼中判斷標志位的代碼 如果標志位為True執(zhí)行break將跳出整個循環(huán) 如果輸入2.直接break跳出while循環(huán)到最上級目錄! """ if jump_tag == "1": jump_up_flag = True break if jump_tag == "2": break#如果jump_tag賦值為2,則直接跳出while循環(huán),到上層for循環(huán) if jump_up_flag:#判斷如果標志位為True,將執(zhí)行下面break代碼跳出整個循環(huán)。 break else:#如果標志位(即jump_up_flag)為False,則直接執(zhí)行continue終止本次for循環(huán)進入下一次for循環(huán) continue else:#如果超出三次輸入,則跳出整個for循環(huán) print "\033[31;1m信息無效請重新輸入!3次錯誤之后程序將退出!\033[0m" 總結:本案例重點是標識位,運用標識位的賦值對循環(huán)進行判斷: 比如: if jump_tag == "1": jump_up_flag = True break if jump_tag == "2": break#如果jump_tag賦值為2,則直接跳出while循環(huán),到上層for循環(huán) if jump_up_flag:#判斷如果標志位為True,將執(zhí)行下面break代碼跳出整個循環(huán)。 break 在jump_tag == "1"重新修改jump_up_flag = True,影響到下一次是否跳出整個循環(huán)的思路,這個是本次案例的點睛之筆 另外就是: for i in range(3): -------------- -------------- else:
配合使用,超過三次就直接退出for循環(huán),else提示跳出for循環(huán),for作為限制循環(huán)次數,這種用法在程序中是比較高明的思路
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。