python 笔记19
设计三级菜单程序
1·首先用字典写一个三级菜单
menu = {
'北京':{
'朝阳区':{
'国贸':{
'CICC':{},
'惠普HP':{},
'渣打银行':{},
'CCTV':{},
},
'望京':{
'陌陌':{},
'奔驰':{},
'360':{},
},
'三里屯':{
'优衣库':{},
'apple':{},
},
},
'昌平区':{
"沙河":{
'老男孩':{},
'阿泰包子':{},
},
"天通苑":{
'链家':{},
'我爱我家':{},
},
"回龙观":{},
},
'海淀区':{
'五道口':{
'谷歌':{},
'网易':{},
'搜狐':{},
'搜狗':{},
'快手':{},
},
'中关村':{
'youku':{},
'爱奇艺':{},
'汽车之家':{},
'新东方':{},
'QQ':{},
},
},
},
'上海':{
'浦东':{
'陆家嘴':{
'CICC':{},
'高盛':{},
'摩根':{},
},
'外滩':{},
},
'闵行':{},
'静安':{},
},
'山东':{
'济南':{},
'德州':{
'乐陵':{
'丁务镇':{},
'城区':{},
},
'平原':{},
},
'青岛':{},
},
}
2.代码
current_layer = menu
parent_layers = []
while True:
for key in current_layer:
print(key)
choice = input(">>:").strip()
if len(choice) == 0:
continue
if choice in current_layer:
parent_layers.append(current_layer)
current_layer = current_layer[choice]
elif choice == 'b':
if parent_layers:
current_layer = parent_layers.pop()
else:
print("无此项")
值得注意的地方:若全部用if语句,程序运行时会遍历所有if(不管每个if后的逻辑运算是否为True)。而用if-elif,程序运行时,只要if或后续某一个elif之一满足逻辑值为True,则程序执行完对应输出语句后自动结束该轮if-elif(即不会再去冗余地执行后续的elif或else)。程序执行效率更高,在项目越庞大代码越多的情况下体现越明显。
上面的循环中必须要有一个elif,如果把elif换成了if,那么最后就会执行else 中的 print("无此项"),与我们需要的功能矛盾。