menu = { '大一':{ '学科':{ 'c语言':{}, '物联网概论':{}, '初识python': {}, '操作系统':{} }, '娱乐':{ '运动会':{}, '实验室':{}, '学生会':{} } }, '大二': { '课程': { '计算机组成原理': {}, '数据结构': {}, '单片机': {}, '计算机网络':{} }, '兼职':{ '家教':{}, '进厂':{}, '服务员':{} } }, '大三': { '自学': { 'python': {}, '数据结构': {}, '前端': {}, '数据库':{} }, '经历':{ '找实习':{}, '实习':{} } } } # 方法一:用递归的方式 def ThreeMenu(dic): while 1: for key in dic:print(key) key = input('>>>').strip() if key == 'b' or key == 'q':return key elif key in dic.keys() and dic[key]: res = ThreeMenu(dic[key]) if res == 'q': return 'q' elif (not dic.get(key)) or (not dic[key]): continue ThreeMenu(menu) #方法二:用堆栈的方式 l = [menu] while l: for key in l[-1]:print(key) k = input('input>>').strip() # 北京 if k in l[-1].keys() and l[-1][k]: l.append(l[-1][k]) elif k == 'b':l.pop() elif k == 'q':break