測試環境win7,python3.6,pycharm社區版
作業需求:
(1. 運行程序輸出第一級菜單
(2. 選擇一級菜單某項,輸出二級菜單,同理輸出三級菜單
(3. 菜單數據保存在文件中
(4. 讓用戶選擇是否要退出
(5. 有返回上一級菜單的功能
我寫的三級菜單,這邏輯我也是嗶了狗
menu = {
"火車":{"河南省":
{"鄭州站":{},"漯河站":{},"信陽站":{}},
"湖北省":
{"武漢站":{},"武昌站":{}}},
"地鐵":{"線路11":
{"李子園":{},"曹楊路":{},"江蘇路":{}},
"線路9":
{"徐家匯":{},"松江新城":{},"九亭":{}}},
"公交":{"1223":
{'榮和怡景園':{},'自來水廠':{},'大渡口':{}},
"嘉定區間":
{'樂購':{},'新瑪特':{},'家樂福':{}}}
}
先來個我的正常思維代碼:(據說很二筆的,但是邏輯很清晰嘛!嘿嘿)
flag = True
while flag: #全局變量,設置跳出整個循環
for i in menu: #遍歷第一層字典
print(i)
num_1 = input("請輸入》》")
# print(menu.keys())
if num_1 in menu.keys():
while flag:
for i in menu[num_1]:
print(i)
num_2 = input("第二層:")
if num_2 in menu[num_1]:
while flag:
for i in menu[num_1][num_2]:
print(i)
num_3 = input("第三層了:")
if num_3 in menu[num_1][num_2]:
print(num_3,'this is you input')
elif num_3 == 'b':
break
else:
continue
elif num_2 == 'b':
break
else:
continue
elif num_1=="b":
exit()
else:
continue
就這還費了我九牛二虎呢,我只有多練、多練、多練了,
看看代碼精簡版(很文藝???)
1 level =[] 2 while True: 3 for key in menu: 4 print(key) 5 your_choice = input("your choice >>:").strip() 6 if your_choice == "b": 7 if len(level)==0:break #當列表空的時候,就是退出大循環的時候 8 menu=level[-1] 9 level.pop() #刪除列表最后一個元素, 10 print(level) 11 # break 12 elif your_choice in menu: 13 # print(menu) 14 level.append(menu) 15 # print(level) 16 menu=menu[your_choice] 17 else: 18 continue
都是學過的知識,為啥自己沒有用上呢?還要老司機帶路的喲!加油
