Python三級(jí)菜單的實(shí)例
更新時(shí)間:2017年09月13日 08:09:59 作者:python修煉手冊(cè)
下面小編就為大家?guī)?lái)一篇Python三級(jí)菜單的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
要求:
打印省、市、縣三級(jí)菜單
可返回上一級(jí)
可隨時(shí)退出程序
版本1
# _author : Ahern Li
# @_date : 2017/9/12
menu = {
'浙江省':{
'杭州市':{
'余杭區(qū)':{'中泰':{},'臨平':{}},
'西湖區(qū)':{'西湖':{},'留下':{}}
},
'溫州市':{
'蒼南縣':{'靈溪':{},'龍港':{}},
'瑞安縣':{'安陽(yáng)':{},'錦湖':{}}
}
},
'廣東省':{
'廣州市':{
'越秀區(qū)':{'人民路':{},'北京路':{}},
'荔灣區(qū)':{'沙面':{},'龍津':{}}
},
'珠海市':{
'香洲區(qū)':{'拱北':{},'吉大':{}},
'金灣區(qū)':{'紅旗鎮(zhèn)':{},'平沙鎮(zhèn)':{}}
}
}
}
# 返回標(biāo)記
q_flag = True
# 退出標(biāo)記
Q_flag = True
# 返回,退出標(biāo)記出現(xiàn)False退出循環(huán)
while q_flag and Q_flag:
# 遍歷打印省份
for i in menu:
print(i)
province = input('請(qǐng)輸入要查找的省份(Q,退出):').strip()
if province in menu:
while q_flag and Q_flag:
for i in menu[province]:
print(i)
city = input('請(qǐng)輸入要查找的市(q,返回 或 Q,退出):').strip()
if city in menu[province]:
while q_flag and Q_flag:
for i in menu[province][city]:
print(i)
county = input('請(qǐng)輸入要查找的區(qū)或縣(q,返回 或 Q,退出):').strip()
if county in menu[province][city]:
while q_flag and Q_flag:
for i in menu[province][city][county]:
print(i)
# 提示最后一頁(yè),輸入格式
choice = input('最后一頁(yè)! q,返回 或 Q,退出:').strip()
if choice == 'q':
# 配合 else: q_flag = True 退出該層循環(huán),返回上層循環(huán)
q_flag = False
elif choice == 'Q':
# 退出大循環(huán)
Q_flag = False
else:
# 提示輸入不合法
print('輸入錯(cuò)誤!')
# 改回 q_flag 的值,實(shí)現(xiàn)只退出一層循環(huán)
else:
q_flag = True
elif county == 'q':
q_flag = False
elif county == 'Q':
Q_flag = False
else:
print('輸入錯(cuò)誤!')
else:
q_flag = True
elif city == 'q':
q_flag = False
elif city == 'Q':
Q_flag = False
else:
print('輸入錯(cuò)誤!')
else:
q_flag = True
elif province == 'Q':
Q_flag = False
else:
print('輸入錯(cuò)誤!')
版本2
# _author : Ahern Li
# @_date : 2017/9/12
menu = {
'浙江省':{
'杭州市':{
'余杭區(qū)':{'中泰':{},'臨平':{}},
'西湖區(qū)':{'西湖':{},'留下':{}}
},
'溫州市':{
'蒼南縣':{'靈溪':{},'龍港':{}},
'瑞安縣':{'安陽(yáng)':{},'錦湖':{}}
}
},
'廣東省':{
'廣州市':{
'越秀區(qū)':{'人民路':{},'北京路':{}},
'荔灣區(qū)':{'沙面':{},'龍津':{}}
},
'珠海市':{
'香洲區(qū)':{'拱北':{},'吉大':{}},
'金灣區(qū)':{'紅旗鎮(zhèn)':{},'平沙鎮(zhèn)':{}}
}
}
}
current_layer = menu # 實(shí)現(xiàn)動(dòng)態(tài)循環(huán)
parent_layer = [] # 保留所有父層,最后一個(gè)元素永遠(yuǎn)為父層
while True:
print() # 僅為了打印美觀
for i in current_layer: # 遍歷打印地址
print(i)
choice = input('請(qǐng)?jiān)谙路捷斎氩樵兊刂穃n>>>:').strip()
if choice in current_layer:
if current_layer[choice]: # 判斷是否為末層
parent_layer.append(current_layer) # 進(jìn)入子層前,添加當(dāng)前層作為父層
current_layer = current_layer[choice] # 修改子層
else:
print('當(dāng)前是最后一頁(yè)')
elif choice == '':
continue
elif choice == 'q': # 返回上層
if parent_layer: # 判斷 parent_layer 是否為空
current_layer = parent_layer.pop() # 取出當(dāng)前層父層
# 退出循環(huán)
elif choice == 'Q':
break
else:
print('輸入錯(cuò)誤!')
以上這篇Python三級(jí)菜單的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 單例設(shè)計(jì)模式用法實(shí)例分析
這篇文章主要介紹了Python 單例設(shè)計(jì)模式用法,結(jié)合實(shí)例形式分析了Python單例模式的具體定義與使用操作技巧,需要的朋友可以參考下2019-09-09
python使用super()出現(xiàn)錯(cuò)誤解決辦法
這篇文章主要介紹了python使用super()出現(xiàn)錯(cuò)誤解決辦法的相關(guān)資料,對(duì)于TypeError: must be type, not classobj的錯(cuò)誤進(jìn)行處理,需要的朋友可以參考下2017-08-08
Python爬蟲框架Scrapy實(shí)戰(zhàn)之批量抓取招聘信息
網(wǎng)絡(luò)爬蟲又被稱為網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁(yè)追逐者,是按照一定的規(guī)則,自動(dòng)抓取萬(wàn)維網(wǎng)信息的程序或者腳本。這篇文章主要介紹Python爬蟲框架Scrapy實(shí)戰(zhàn)之批量抓取招聘信息,有需要的朋友可以參考下2015-08-08
Python設(shè)計(jì)模式中的狀態(tài)模式你了解嗎
這篇文章主要為大家詳細(xì)介紹了Python設(shè)計(jì)模式中的狀態(tài)模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02

