一.作業需求:
1. 運行程序輸出第一級菜單
2. 選擇一級菜單某項,輸出二級菜單,同理輸出三級菜單
3. 菜單數據保存在文件中
4. 讓用戶選擇是否要退出
5. 有返回上一級菜單的功能
二.三級菜單讀取文件內容:
{ '北京':{ "昌平":{ "沙河":["oldboy","test"], "天通苑":["鏈家地產","我愛我家"] }, "朝陽":{ "望京":["奔馳","陌陌"], "國貿":{"CICC","HP"}, "東直門":{"Advent","飛信"}, }, "海淀":{}, }, '山東':{ "德州":{}, "青島":{}, "濟南":{} }, '廣東':{ "東莞":{}, "常熟":{}, "佛山":{}, }, }
三.流程圖:

四.代碼:(python3.6)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Even import sys file = open("三級菜單文本內容",'r',encoding='utf-8') # 打開3級菜單文本文件 f = file.read() for line in f: # 讀取文件中每行信息 file_str = str(f) # 將每行信息轉成字符串格式 data = eval(file_str) # 字符串轉成字典格式 def list(): # 定義讀取字典中的key for i in data: print(i) def choose1(choice1): # 定義第一層選擇 while choice1 != 'q': # 輸入為q即退出程序 global one one = choice1 # 定義全局變量one 使得其他函數可以調用 if choice1 in data: for i2 in data[one]: print("\t", i2) # 展示3級菜單中所選第一層下的第二層信息 choose2(input("請輸入第二層:")) # 調用choose2函數,輸入第二層信息 break elif choice1 == 'b': # 輸入b退出循環 break else: error = input("輸入錯誤,請重新輸入第一層:") # 輸入內容不在第一層選項中 if error == 'q': # 輸入q退出程序 sys.exit() else: # 否則調用本函數 choose1(error) else: sys.exit() def choose2(choice2): # 定義第二層選擇 while choice2 != 'q': global two two = choice2 # 定義全局變量two 使得其他函數可以調用 if choice2 in data[one]: for i3 in data[one][two]: print("\t\t", i3) # 展示3級菜單中所選第二層下的第三層信息 choose3(input("請輸入第三層:")) # 調用choose3函數,輸入第三層信息 break elif choice2 == 'b': # 輸入b退回第一層 list() # 調用list函數展示第一層信息 choose1(input("請輸入第一層:")) break else: error2 = input("輸入錯誤,請重新輸入第二層:") # 輸入錯誤,重新輸入 if error2 == 'q': # 輸入q退出程序 sys.exit() else: choose2(error2) # 調用本函數 else: sys.exit() def choose3(choice3): # 定義第三層選擇 while choice3 != 'q': global three three = choice3 # 定義全局變量three 使得其他函數可以調用 if choice3 in data[one][two]: for i4 in data[one][two][three]: print("\t\t\t", i4) # 展示3級菜單中所選第三層下的第四層信息 choose4(input("最后一層,退回上一層請按‘b’,退出請按'q")) # 調用choose4函數,提示退出或退回 break elif choice3 == 'b': # 輸入為b退出 choose1(one) break else: error3 = input("輸入錯誤,請重新輸入第三層:") # 輸入錯誤,可以重新輸入,q退出 if error3 == 'q': sys.exit() else: choose3(error3) # 調用本函數 else: sys.exit() def choose4(choice4): # 定義最后退出 while choice4 != 'q': # 輸入q退出 if choice4 == 'b': # 輸入b退回上一層 choose2(two) else: choose4(input("真的是最后一層了,退回上一層請按‘b’,退出請按'q'")) # 聲明結束 else: sys.exit() print("退出請按'q',返回上級菜單請按'b'") # 聲明功能 list() # 調用list函數展示第一層信息 choose1(input("請輸入第一層:")) # 主程序,開始運行
