#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author David
"""
功能要求:
三级菜单
可一次选择进入各子菜单
所需新知识点:列表、字典。
按b返回上一级,按q退出菜单
"""
#创建一个地址位置描述字典
china_map = {
"北京" : {
"东城区" : {
"街道1":"街道1描述",
"街道2":"街道2描述"
},
"海淀区": {
"苏州街": "苏州街描述",
"海淀黄庄": "海淀黄庄描述"
}
},
"陕西省": {
"西安市": {
"碑林区": ["碑林","钟楼","鼓楼","回坊","兴庆公园","西安交通大学","太多经典"],
"莲湖区": ["莲湖公园","革命公园"],
"新城区": ["除了省政府,其他真不清楚"],
"雁塔区": ["大雁塔","大唐芙蓉园","青龙寺","陕西历史博物馆","曲江","西高新","N多NB学校","好的资源太多"],
"未央区": ["西安市政府","龙首源","城市运动公园","不感兴趣"],
"灞桥区": ["世博园","湿地公园","桃花潭公园","浐灞半岛","雁鸣湖公园","白鹿原影视城","鲸鱼沟旅游"],
"长安区": ["N多大学新校区","秦岭环山自行车赛","沣峪口","翠华山","南五台","农家乐","沾上秦岭啥都好"],
"阎良区": ["航空城","西飞XX","除了航空还是航空,牛逼闪闪"],
"杨凌区": ["国家级农业示范区","西北农林大学"],
"高陵区": ["渭北工业区,让工业远离主城区"],
"户县": ["啥都想搞,可就不被重视","户县软面","秦镇米皮"],
"蓝田县": ["蓝田猿人遗址","蓝田玉","汤浴温泉"],
},
"安康市": {
},
"宝鸡市": {
},
"汉中市": {
},
"商洛市": {
},
"铜川市": {
},
"渭南市": {
},
"咸阳市": {
},
"延安市": {
},
"榆林市": {
},
}
}
#欢迎变量
msg_welcome = "欢迎访问china_map,可供查看的地址为"
msg_choice = "请输入需要浏览的地名:"
#程序主体思想
#3层while循环,分别对应省级,市级,区级。
#用户选择省份后将进入市级选择界面,依次选择城市,区域。
#在任何一级里输入b,执行break函数,跳出该级循环,返回到上级循环里。
#在任意以及里输入q,则给exit_flag赋值为true,各层的循环以次被打破,程序退出。
#定义循环推出变量,并进行初始化赋值。
exit_flag = False
# 开始省一级的循环
while exit_flag is not True:
print(msg_welcome)
for key in china_map:
print(key)
print("province_level".center(40, "-"))
user_choice = input(msg_choice)
if user_choice in china_map.keys():
# 开始市一级的循环
while exit_flag is not True:
for key2 in china_map[user_choice]:
print(key2)
print("city_level".center(40, "-"))
user_choice2 = input(msg_choice)
if user_choice2 in china_map[user_choice].keys():
# 开始区一级的循环
while exit_flag is not True:
for key3 in china_map[user_choice][user_choice2]:
print(key3)
print("zone_level".center(40,"-"))
user_choice3 = input(msg_choice)
if user_choice3 in china_map[user_choice][user_choice2].keys():
print("description of {0}".format(user_choice3).center(40,"-"))
print(user_choice3,china_map[user_choice][user_choice2][user_choice3])
print("end of description".center(40,"-"))
else:
if user_choice3 == "q":
print("END".center(40, ‘*‘))
exit_flag = True #推倒多层循环的多米诺骨牌
elif user_choice3 == "b":
break #第3层循环被打破
else:
if user_choice2 == "q": #推倒多层循环的多米诺骨牌
print("END".center(40, ‘*‘))
exit_flag = True
elif user_choice2 == "b": #第2层循环被打破
break
else:
if user_choice == "q":
print("END".center(40, ‘*‘))
exit_flag = True #推倒多层循环的多米诺骨牌
本文出自 “net580” 博客,谢绝转载!
原文地址:http://net580.blog.51cto.com/1404195/1836498