python作業:三級菜單(第一周)


一.作業需求:

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("請輸入第一層:"))   # 主程序,開始運行
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM