实例要求:
1.三级菜单(省、市、区)
2.可依次选择进入各子菜单
3.所需新知识点:列表、字典
python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,
for循环的时候必须有一个可迭代的对象,才能循环,比如说得有一个数组。
python中for循环很简单,循环的是一个可迭代对象中的元素,你这个对象中有多少个元素,就循环多少次,
比如说一个数组list,list = [‘a’,‘b’,‘c’],直接循环取的是这个list里面的值,直到取值结束。
data = {
"北京市":{
"海淀区":{
},
"朝阳区":{
"望京":['奔驰','陌陌'],
"国贸": ['CICC','惠普'],
"东直门": ['Advent','飞信'],
},
"昌平区":{
"沙河":["oldboy","51test"], # 只要有中括号,里面的元素就应该用逗号隔开
"天通苑": ["链家地产","我爱我家"],
}
},
"内蒙古":{
"呼和浩特市":{
"赛罕区": [],
"玉泉区": [],
"新城区": [],
},
"包头市":{
"高新技术开发区": [],
"九原区": [],
},
"鄂尔多斯市":{
"杭锦旗": [],
"鄂托克旗": [],
},
},
"辽宁省": {
"沈阳市": {
"东陵区": [],
},
"抚顺市": {
"经济开发区": [],
},
"盘锦市": {
"大洼区": [],
},
},
}
exit_flag = False # 通过设定一个true或false的值,来实现用户想随时退出的功能
while not exit_flag:# 死循环 while True变化来的
# 一级一级地打印
for i1 in data: # 首次循环key
print(i1) # 打印的是字典首层的key
choice1 = input('选择进入1>>:') # 输入的是省级菜单的key
if choice1 in data: # 如果选择的省在字典里,程序需在此时处于死循环状态,方便用户多次选择省级菜单
while not exit_flag: # 死循环,可以不断重选
for i2 in data[choice1]: # 进入用户所选的省,循环
print('\t',i2) # 打印的是字典中,用户所选的省下,县级的key
choice2 = input('选择进入2>>:') # 输入的是县级菜单的key
if choice2 in data[choice1]: # 如果选择的县在字典里,程序又需在此时处于死循环状态,方便用户多次选择县级菜单
while not exit_flag: # 死循环,可以不断重选
for i3 in data[choice1][choice2]: # 进入用户所选的县,循环
print('\t\t', i3) # 打印该县下面的内容(市),key
choice3 = input('选择进入3>>:') # 用户输入所选的市,key
if choice3 in data[choice1][choice2]: # 如果选择的市在字典里,程序需要将下面的内容展示出来,用for循环
for i4 in data[choice1][choice2][choice3]:
print('\t\t\t',i4) # 打印下面循环的内容。\t\t代表打印内先tab两下
choice4 = input('最后一层,按b返回>>:')
if choice4 == 'b':
pass # pass代表什么也不做,放在这里是占位符,避免代码报错;此处什么也不做的话,代码会回到i3循环
elif choice4 == 'q':
exit_flag = True
if choice3 == 'b':
break
elif choice3 == 'q':
exit_flag = True
if choice2 == 'b':
break
elif choice2 == 'q':
exit_flag = True