今天優化了一下三級菜單的代碼 兩個版本: 一:分幾次迴圈完成: ...
今天優化了一下三級菜單的代碼
兩個版本:
一:分幾次迴圈完成:
south_west={
'雲南':{
'昆明':{'嵩明':{'楊林':[]},'五華區':[],'官渡區':[],'西山區':[]},
'曲靖':{'宣威':{'宛水':[]},'麒麟區':[],'陸良':[],'馬龍':[],'富源':[]},
'大理':{'大理州區':{'古城區':'大理古城'}}
},
'貴州':{
'貴陽':{'觀山湖區':{}},
'遵義':{'播州區':{}},
'六盤水':{'水城':{}}
},
'四川':{
'成都':{'天府新區':{}},
'綿陽':{'游仙區':{}},
'樂山':{'五通橋區':{}}
}
}
back_flag = False
exit_flag = False
while not back_flag and not exit_flag:
for key in south_west:
print(key)
choice = input('>>>:').strip()
if choice == 'B':
back_flag = True
if choice == 'Q':
exit_flag = True
if choice in south_west:
while not back_flag and not exit_flag:
for key1 in south_west[choice]:
print(key1)
choice1 = input('>>>:').strip()
if choice1 == 'B':
back_flag = True
if choice1 == 'Q':
exit_flag = True
if choice1 in south_west[choice]:
while not back_flag and not exit_flag:
for key2 in south_west[choice][choice1]:
print(key2)
choice2 = input('>>>:').strip()
if choice2 == 'B':
back_flag = True
if choice2 == 'Q':
exit_flag = True
if choice2 in south_west[choice][choice1]:
while not back_flag and not exit_flag:
for key3 in south_west[choice][choice1][choice2]:
print(key3)
choice3 = input('>>>:').strip()
if choice3 == 'B':
back_flag = True
if choice3 == 'Q':
exit_flag = True
if choice3 in south_west[choice][choice1][choice2]:
while not back_flag and not exit_flag:
for key4 in south_west[choice][choice1][choice2][choice3]:
print(key4)
choice4 = input('>>>:').strip()
print('last level!')
if choice4 =='B':
back_flag = True
if choice4 =='Q':
exit_flag = True
else:
back_flag = False
else:
back_flag = False
else:
back_flag = False
else:
back_flag = False
二、利用列表的特點,分別添加和刪除,也就是先將上一層的數據保存到列表中待調用
south_west={
'雲南':{
'昆明':{'嵩明':{'楊林':[]},'五華區':[],'官渡區':[],'西山區':[]},
'曲靖':{'宣威':{'宛水':[]},'麒麟區':[],'陸良':[],'馬龍':[],'富源':[]},
'大理':{'大理州區':{'古城區':'大理古城'}}
},
'貴州':{
'貴陽':{'觀山湖區':{}},
'遵義':{'播州區':{}},
'六盤水':{'水城':{}}
},
'四川':{
'成都':{'天府新區':{}},
'綿陽':{'游仙區':{}},
'樂山':{'五通橋區':{}}
}
}
current_layer = south_west
#parent_layer = []
parent_layers = []
while True:
for key in current_layer:
print(key)
chioce = input('>>>:').strip()
if len(chioce)==0:continue
if chioce in current_layer:
#parent_layer = current_layer #在進入下一層前,先將上一層記錄下來(相當於是父級)
parent_layers.append(current_layer)
current_layer = current_layer[chioce] #進入下一層(相當於是子級)
elif chioce == 'b':
#current_layer = parent_layer #把父級賦值給子級
if parent_layers : #空列表返回False
current_layer = parent_layers.pop()
else:
print('無')