十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
介紹:

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
利用函數(shù)遞歸實(shí)現(xiàn)
理論上可生成N級(jí)
支持返回上級(jí)
原創(chuàng)作品,轉(zhuǎn)載注明出處。
#!-*- coding:utf-8 -*-
__author__ = 'David'
class CreateMenu(object):
def __init__(self):
self.temp_menu = {} # 臨時(shí)菜單,存儲(chǔ)每級(jí)菜單的字典。
def run(self, menu_dict, initial=0):
'''
:param menu_dict: 原始菜單字典,格式:{1:{2:{3:{4:{5:'value'}}}}},可以返回5的值
:param initial: 菜單等級(jí)控制參數(shù),默認(rèn)0級(jí),最上層菜單
:return: 返回值是字典中最小參數(shù)值,字符串格式。
'''
self.temp_menu[initial] = menu_dict
if type(menu_dict) is dict:
temp = {}
i = 1 # 菜單標(biāo)號(hào)數(shù)字
# 生成選擇菜單
for k, v in menu_dict.items():
t = str(i)
temp[t] = k
print('{}: {}'.format(i, k))
i += 1
print('0', 'back')
choose = input('-->:').strip()
if choose.isdigit(): # 判斷如果輸入的是數(shù)字,繼續(xù)判斷選擇的是哪一項(xiàng)
if choose == '0' and initial == 0: # 等于0,并且和初始菜單一樣,不做任何操作
return self.run(menu_dict, initial)
elif choose == '0': # 等于0,不和初始菜單一樣,則返回
del self.temp_menu[initial] # 從臨時(shí)層級(jí)列表里刪除本級(jí)
initial -= 1 # 修改完上一級(jí)參數(shù)
return self.run(self.temp_menu[initial], initial)
elif int(choose) > i or int(choose) < 1: # 如果選擇的數(shù)字超出選項(xiàng)值,報(bào)錯(cuò),重新運(yùn)行當(dāng)前菜單
print('Input Error!')
return self.run(menu_dict, initial)
else: # 正常進(jìn)入下級(jí)菜單
print(temp[choose])
initial += 1 # 菜單層級(jí)加1
menu_dict = menu_dict[temp[choose]] # 獲取選擇的選項(xiàng)值
if type(menu_dict) is dict: # 如果選擇的值是字典,則判斷為有子菜單
return self.run(menu_dict, initial) # 顯示子菜單選項(xiàng)
else: # 如果不是字典,則返回選項(xiàng)對(duì)應(yīng)的值
return menu_dict
else: # 如果不是數(shù)字,再運(yùn)行一遍函數(shù),參數(shù)都是和之前一樣的
print('Input Error!')
return self.run(menu_dict, initial)
else: # 如果輸入的參數(shù)不是字典則報(bào)錯(cuò)。
print('Data type is Error!')
if __name__ == '__main__':
teacher_menu = {'管理班級(jí)': {'創(chuàng)建班級(jí)': 'create_grade', '添加學(xué)員': 'add_stu'},
'上課': 'create_record',
'管理成績(jī)': 'mgr_grade',
'退出': 'exit'}
menu = CreateMenu()
value = menu.run(teacher_menu)
print(''.format(value))