博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实战演练(二)三级菜单
阅读量:6403 次
发布时间:2019-06-23

本文共 4591 字,大约阅读时间需要 15 分钟。

一.实现功能

1. 运行程序输出第一级菜单
2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单
3. 菜单数据保存在文件中
4. 让用户选择是否要退出
5. 有返回上一级菜单的功能

 

 

二,流程图

 

#-*- Coding:utf-8 -*-# Author: kking'''作业需求:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能'''import sysdata = {    '海贼王':{        '草帽海贼团':{            '路飞':{
'果实能力':'橡胶果实','霸气':['武装色霸气','见闻色霸气','霸王色霸气'],'男':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}, }, },}def _exit(): #定义一个退出循环打印查询结果函数 print('*********查询结果*******') for query_result in query_results: print(query_result) sys.exit('退出程序')query_results = [] #定义一个空列表,用来储存查询结果for d1 in data: #首先遍历第一级菜单并打印 print(d1)while True: #循环第一级菜单,如果用户输入内容错误或为空则给出提示,直到为True执行第二层菜单循环 choices = input('请选择漫画>>>:') if choices in data: #判断用户输入内容是否包含在第一层菜单内 while True: #循环第二级菜单,如果用户输入内容错误或为空则给出提示,直到为True执行第三层菜单循环 for d2 in data[choices]: #遍历第二级菜单并打印 print('\t',d2) choices2 = input('请选择下级菜单>>>:') if choices2 in data[choices]: #判断用户输入内容是否包含在第二层菜单内 while True: #循环第三级菜单,如果用户输入内容错误或为空则给出提示,直到为True执行最后一层循环 for d3 in data[choices][choices2]: #遍历第三级菜单并打印 print('\t\t\t',d3) choices3 = input('请选择动漫人物>>>:') if choices3 in data[choices][choices2]: #判断用户输入内容是否包含在第三层菜单内 query_results.append(choices3) #将choices3的值存入 query_results列表中 for result in data[choices][choices2][choices3].items(): #循环遍历第三级菜单参数 query_results.append(result) #根据用户输入choices3为键,找到相应的值, # 存入query_results列表中并打印 print(result) user_goon = input('是否继续查询>>>? q:退出查询') if user_goon != 'q': #判断用户是否继续查询,如结果不为q则用户继续选择想要查询的人物 pass else: #判断用户是否继续查询,如结果为q则退出整个循环 _exit() elif choices3 == '' or choices3 == ' ': #判断用户输入的choices3内容是否为空 print("输入不能为空") elif choices3 == 'b': #判断用户输入内容是否为返回上一级菜单 break elif choices3 =='q': #判断用户输入内容是否为q _exit() else: #判断用户输入内容是否存在 print('人物不存在请重新输入') elif choices2 == '' or choices2 == ' ': print("输入不能为空") elif choices2 == 'q': _exit() elif choices2 == 'b': break else: print('菜单不存在请重新输入') elif choices == '' or choices == ' ': print("输入不能为空") elif choices == 'q': _exit() else:print('漫画不存在请重新输入')
View Code

 

转载于:https://www.cnblogs.com/kking-lh/p/9983689.html

你可能感兴趣的文章
【mysql】统计库、表大小
查看>>
ThinkPHP项目笔记之RBAC(权限)中篇
查看>>
经典SQL语句大全
查看>>
百度地图 Android SDK - 检索功能使用的简单演示样例
查看>>
nginx+apache+php+mysql服务器集群搭建
查看>>
ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
查看>>
ABP源码分析三十九:ABP.Hangfire
查看>>
Why is applicationhost.config still being added to source control even thought it's in gitignore
查看>>
微信网页授权java实现
查看>>
用StackExchange.Redis客户端连接阿里云Redis服务遇到的问题
查看>>
Chapter 1 First Sight——15
查看>>
约束篇
查看>>
leetCode 78.Subsets (子集) 解题思路和方法
查看>>
机器学习入门之四:机器学习的范围(转载)
查看>>
即将成为传奇的微软
查看>>
Android项目实战--手机卫士18--读取用户的短信内容以及短信备份
查看>>
nanosleep纳秒级延迟
查看>>
[C#] 我的log4net使用手册
查看>>
FineUI官方论坛出现空白页的解决办法!
查看>>
进程和线程之间的通信
查看>>