測試環境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
都是學過的知識,為啥自己沒有用上呢?還要老司機帶路的喲!加油