三级登陆 @1 省市县乡四级 @2 可以返回上一级 @3可以立即退出
1 #!coding: utf-8 2 menu={ 3 '河北':{ 4 '邯郸':{ 5 '涉县':{ 6 '偏店':{}, 7 '井店':{} 8 }, 9 '武安':{ 10 '武安某镇1':{}, 11 '武安某镇2':{} 12 } 13 }, 14 '石家庄':{ 15 '庄县1':{ 16 '庄县1某镇1':{}, 17 '庄县1某镇2':{} 18 }, 19 '庄县2':{ 20 '庄县2某镇1':{}, 21 '庄县2某镇2':{} 22 } 23 } 24 } 25 , 26 '北京':{ 27 '西城区':{ 28 '菜市口':{ 29 '真功夫':{}, 30 '新网':{} 31 }, 32 '宣武门':{ 33 '移动网':{}, 34 '地铁站':{} 35 } 36 }, 37 '海淀区':{} 38 39 '北京':{ 40 '西城区':{ 41 '菜市口':{ 42 '真功夫':{}, 43 '新网':{} 44 }, 45 '宣武门':{ 46 '移动网':{}, 47 '地铁站':{} 48 } 49 }, 50 '海淀区':{} 51 52 }, 53 '山西':{} 54 } 55 current_layer = menu #动态变量 56 parrent_layers= [] 57 while True: 58 for key in current_layer: 59 print key #1----将整个大的列表中键打印出,河北,北京和山西;2----打印出邯郸 石家庄 3----打印出涉县,武安 4----打印出,偏店,井店 60 choice = raw_input(">>>:").strip() 1----例如选择河北,choice=河北 2------邯郸 3------涉县 4------偏店 61 if choice in current_layer: 62 parrent_layers.append(current_layer) #1----parrent_layers现在是原来大的列表; 2---加上邯郸,石家庄 3---加上涉县 武安 4-----加上偏店,井店 -------关键处,一级一级返回; 63 current_layer = current_layer[choice] #1---这步current_layer将成为邯郸,石家庄;2---成为涉县,武安; 3----成为偏店,井店 4----无内容啦 64 elif choice == 'b': #定义的返回上一级; 65 if parrent_layers: 66 current_layer = parrent_layers.pop() #pop的用法很好,从末尾到首,一次pop掉; 67 elif choice == 'q': 68 break 69 else: 70 print "无此项"