-
Notifications
You must be signed in to change notification settings - Fork 8
/
三级菜单.py
133 lines (117 loc) · 6.35 KB
/
三级菜单.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#-*- Coding:utf-8 -*-
# Author: D.Gray
'''
作业需求:
1. 运行程序输出第一级菜单
2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单
3. 菜单数据保存在文件中
4. 让用户选择是否要退出
5. 有返回上一级菜单的功能
'''
import sys
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},
},
},
}
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('漫画不存在请重新输入')