python学习作业(一):三级菜单
1. 用递归的方式实现:
''' 作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 让用户选择是否要退出 4. 有返回上一级菜单的功能 ''' #注:此data字典转载之博客(空s蝉灬)里的字典数据来源。 data = { '海贼王':{ '草帽海贼团':{ '路飞':{'果实能力':'橡胶果实','霸气':['武装色霸气','见闻色霸气','霸王色霸气'],'男':21}, '索罗':{'果实能力':'无','霸气':['武装色霸气','见闻色霸气'],'男':24}, '香吉士':{'果实能力':'无','霸气':['武装色霸气','见闻色霸气'],'男':23}, }, '七武海':{ '波雅汉库克':{'果实能力':'甜甜果实','霸气':['武装色霸气','见闻色霸气','霸王色霸气'],'女':20}, '鹰眼米霍克':{'果实能力':'无','霸气':['武装色霸气','见闻色霸气'],'男':26}, '小丑巴基':{'果实能力':'分裂果实','霸气':'无','男':25}, }, '四皇':{ '香克斯':{'果实能力':'未知','霸气':['武装色霸气','见闻色霸气','霸王色霸气'],'男':28}, '黑胡子':{'果实能力':'黑暗果实','霸气':['武装色霸气','见闻色霸气'],'男':28}, '凯多':{'果实能力':'未知','霸气':['武装色霸气','见闻色霸气'],'男':28}, }, }, '妖精的尾巴':{ '灭龙魔导师':{ '纳兹':{'属性能力':'火之灭龙魔法','男':21,}, '伽吉鲁':{'属性能力':'铁之灭龙魔法','男':23,}, '温蒂':{'属性能力':'天之灭龙魔法','女':18,}, }, '超S魔导师':{ '吉尔达斯':{'属性能力':'粉碎','男':28}, '艾璐萨':{'属性能力':'变装魔法','女':26}, '米拉杰':{'属性能力':'变成撒旦','女':27}, }, '六魔将':{ '深夜':{'属性能力':'扭曲空间','男':24}, '克布拉':{'属性能力':'毒之灭龙魔法','男':24}, '安吉拉':{'属性能力':'召唤星灵','女':22}, }, }, '火影':{ '木叶村':{ '宇智波.鼬': {'属性能力':'万花筒写轮眼','男':26}, '日向雏田': {'属性能力':'白眼','女':24}, '我爱罗': {'属性能力':'砂纸守鹤','男':24}, }, '晓':{ '佩恩':{'属性能力':'轮回眼','男':28}, '鬼鲛':{'属性能力':['水遁','鲛肌'],'男':28}, '迪达拉':{'属性能力':['黏土炸弹','自爆'],'男':28} }, '代目':{ '初代':{'姓名':'千手柱间','属性能力':'树诞降临','男':99999}, '三代':{'姓名':'猿飞','属性能力':['土流大河','召唤猿魔'],'男':64}, '四代':{'姓名':'波风水门','属性能力':['飞雷神之术','螺旋丸'],'男':34}, }, }, } #menu def ThrMenu(newdata): #用while循环保存递归数据,返回上一层和打印这一层数据newdata while True: if not hasattr(newdata,'__iter__') or isinstance(newdata,str): print(newdata) else: for key in newdata: print(key) content = input('>>>>>>').strip() if content == 'b' or content == 'q': return content # 进入下一级 elif isinstance(newdata,dict) and content in newdata.keys() and newdata[content] : getcontent = ThrMenu(newdata[content]) if getcontent == 'q':return else: continue ThrMenu(data)
2. 用堆栈的方式实现:(待更新)
level =[] while True: for key in menu: print(key) your_choice = input("your choice >>:").strip() if your_choice == "b": if len(level)==0: break #当列表空的时候,就是退出大循环的时候 menu=level[-1] level.pop() #删除列表最后一个元素 print(level) # break elif your_choice in menu: # print(menu) level.append(menu) # print(level) menu=menu[your_choice] else: continue