python入门之玩转列表我的菜单_我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)...
#!/usr/bin/env python3#coding:utf-8
'''Created on: 2015年12月30日
@author: 張曉宇
Email: 61411916@qq.com
Version: 1.0
Description: 三層菜單
1、菜單一共三級即:省,市,區縣
2、每一級菜單輸入的如果輸入的是菜單里的選項則進入下級菜單
3、第1級菜單輸入q退出系統
4、第2、3級菜單輸入q退出系統,輸入b返回上級菜單
5、三級菜單全部正確打印最后的全部選擇結果,否則繼續循環該機菜單
Help:'''
if __name__ == '__main__':'''@parameters:
provinces:定義省一級菜單,格式為字典,{"菜單序號":"省名稱", ...}
citys:定義省一級菜單,格式為二級嵌套字典{"省名稱":{"菜單序號":"市名稱"}, ...}
area:定義區縣一級菜單,格式為二級嵌套字典{"市名稱":{"菜單序號":"區縣名稱"}, ...}
app_info:系統信息,主要用于顯示'''provinces={"1":"北京","2":"上海","3":"河北省",
}
citys={"北京":{"1":"北京市區","2":"北京市郊區"},"上海":{"1":"上海市區"},"河北省":{"1":"石家莊市", "2":"秦皇島市", "3":"保定市"}
}
areas={"北京市區":{"1":"東城區", "2":"西城區", "3":"海淀區", "4":"朝陽區", "5":"豐臺區", "6":"石景山區"},"北京市郊區":{ "1":"通州區", "2":"順義區", "3":"房山區", "4":"大興區", "5":"昌平區", "6":"懷柔區", "7":"平谷區", "8":"門頭溝區", "9":"密云縣", "10":"延慶縣"},"上海市區":{"1":"黃浦區", "2":"盧灣區", "3":"徐匯區", "4":"長寧區", "6":"靜安區", "7":"普陀區", "8":"閘北區", "9":"虹口區", "11":"楊浦區", "12":"寶山區"},"石家莊市":{"1":"鹿泉", "2":"正定", "3":"藁城", "4":"欒城", "5":"高邑", "6":"新樂", "7":"辛集", "8":"趙縣", "9":"深澤", "10":"晉州"},"保定市":{"1":"南市區", "2":"北市區", "3":"新市區", "4":"白溝新城區", "5":"順平縣"},"秦皇島市":{"1":"海港區", "2":"山海關區", "3":"北戴河區", "4":"撫寧區", "5":"昌黎縣", "6":"盧龍縣", "7":"青龍滿族自治縣"}
}
app_info= '''+-----------------------------------+
| Welcome to 65brother system |
| Version: 1.0 |
| Author: zhangxiaoyu |
+-----------------------------------+'''
#初始化菜單列表,主要是做了一次排序,解決字典無序的問題,這里的d[0]表示對key做排序,int表示先轉換成整數,也就是按照整數的順序進行排序否則如果序號超過10,會出現1后面的是10而不是2
province_list = sorted(provinces.items(), key = lambdad:int(d[0]))#初始化省一級菜單循環開關
province_flag =True#省一級菜單循環
whileprovince_flag:#初始化市一級菜單的循環開關
city_flag =Trueprint(app_info)#打印當前用戶的位置
print("home>")#打印省一級菜單
print("+-----------------------------------+")for province_item inprovince_list:print("%s、%s" %province_item)print("+-----------------------------------+")#獲取用戶輸入的選項
province = input("請輸入你的省份(輸入'q'退出系統):").strip()#判斷用戶的輸入
if province == 'q':#如果用戶輸入的是q關閉省一級菜單循環開關,也就是退出系統
province_flag =Falseelif province inprovinces:#如果輸入的是菜單的序號執行
#獲取省的名稱
province_name =provinces[province]#初始化市一級菜單,同省一樣對key進行排序
city_list = sorted(citys[province_name].items(), key = lambdad:int(d[0]))#市一級菜單循環
whilecity_flag:#打印用戶位置
print("home>%s>" %province_name)#打印市一級菜單
print("+-----------------------------------+")for city_item incity_list:print("%s、%s" %city_item)print("+-----------------------------------+")#獲取用戶輸入
city = input("請輸入你的城市(輸入'q'退出系統,輸入'b'返回上一級菜單):").strip()#判斷用戶輸入
if city == 'q':#如果輸入q關閉省一級和市一級循環開關,也就是退出系統
province_flag =False
city_flag=Falseelif city == 'b':#如果用戶輸入的是b,關閉市一級循環開關,繼續省一級循環
city_flag =Falseelif city incitys[province_name]:#如果用戶輸入的是正確的菜單項
#初始化區縣一級循環開關
area_flag =True#獲取市的名稱
city_name =citys[province_name][city]#初始戶區縣菜單
area_list = sorted(areas[city_name].items(), key = lambdad:int(d[0]))#區縣一級循環
whilearea_flag:#打印用戶位置
print("home>%s>%s>" %(province_name,city_name))#打印區縣菜單
print("+-----------------------------------+")for area_item inarea_list:print("%s、%s" %area_item)print("+-----------------------------------+")#獲取用戶輸入
area = input("請輸入你的區/縣(輸入'q'退出系統,輸入'b'返回上一級菜單):").strip()#判斷用戶輸入
if area == 'q':#如果是q,關閉省、市、區縣一級循環開關,也就是退出系統
area_flag =False
city_flag=False
province_flag=Falseelif area == 'b':#如果是b,關閉縣一級循環開關,繼續市循環
area_flag =Falseelif area inareas[city_name]:#如果輸入正確
#獲取區縣名稱
area_name =areas[city_name][area]#輸出完整的三級菜單選擇信息
input('您選擇的是%s,%s,%s。選擇任意鍵退出系統' %(province_name, city_name, area_name))#關閉省、市、區縣循環開關,退出系統
area_flag =False
city_flag=False
province_flag=Falseelse:#如果區縣選項輸入錯誤提示錯誤
input("輸入錯誤請重新輸入,輸入任意鍵繼續")else:#如果市選項輸入錯誤提示錯誤
input("輸入錯誤請重新輸入,輸入任意鍵繼續")else:#如果省選項輸入錯誤提示錯誤
input("輸入錯誤請重新輸入,輸入任意鍵繼續")
總結
以上是生活随笔為你收集整理的python入门之玩转列表我的菜单_我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平板电脑连接投影仪_交互式触控幼教白板如
- 下一篇: android menu自定义,Andr