4.7. 练习2-打印三级菜单
要求:
- 打印服装三级菜单
- 可返回上一级
- 可随时退出程序
#算法(1)
# 定义服装购买导航菜单
menu = {
'男装': {
'衣服': {
'春秋季': {
'大衣': {},
'风衣': {},
'毛衣': {}
},
'夏季': {
'短T': {},
'背心': {}
},
'冬季': {
'羽绒服': {},
'毛衣': {}
}
},
'裤装': {
'春秋季': {
'牛仔裤': {},
'工装裤': {}
},
'夏季': {
'五分裤': {},
'七分裤': {}
},
'冬季': {
'加厚长裤': {},
},
}
},
'女装': {
'衣服': {
'春秋季': {
'大衣': {},
'风衣': {},
'毛衣': {}
},
'夏季': {
'短T': {},
'背心': {}
},
'冬季': {
'羽绒服': {},
'毛衣': {}
}
},
'裤装': {
'春秋季': {
'牛仔裤': {},
'工装裤': {}
},
'夏季': {
'五分裤': {},
'七分裤': {},
'长裙': {},
'短裙': {}
},
'冬季': {
'加厚长裤': {}
},
}
}
}
tag=True #设置终止标识
while tag:
#打印一级菜单
menu1=menu
for i in menu1:
print(i)
#与用户交互接收一级菜单选项
choice1=input('第一层:您需要男装or女装(输入b返回上一级,q退出)>>>>').strip()
#返回上一层
if choice1 == 'b':
break
#全部退出
elif choice1 == 'q':
tag=False
continue
elif choice1 in menu1:
while tag:
menu2=menu1[choice1]
#打印二级菜单
for i in menu2:
print(i)
#与用户交互输入二级菜单选项
choice2 = input('第二层您需要衣服 or 裤装(输入q退出,b返回上一级)>>').strip()
if choice2 == 'b':
break
elif choice2 == 'q':
tag=False
continue
elif choice2 in menu2:
while tag:
menu3=menu2[choice2]
# 打印三级菜单
for i in menu3:
print(i)
# 与用户交互输入三级菜单选项
choice3=input('第三层:您需要哪个季节的衣服(输入q退出,b返回上一级)').strip()
if choice3 == 'b':
break
elif choice3 == 'q':
tag = False
continue
elif choice3 in menu3:
menu4=menu3[choice3]
for i in menu4:
print(i)
choice4=input('输入q退出,b返回上一级').strip()
if choice4 == 'b':
break
elif choice4 == 'q':
tag = False
continue
else:
print('请按照要求重新输入')
continue
else:
print('请按照要求重新输入')
continue
else:
print('请按照要求重新输入')
continue
#算法(2)
# 定义服装购买导航栏
menu = {
'男装': {
'衣服': {
'春秋季': {
'大衣': {},
'风衣': {},
'毛衣': {}
},
'夏季': {
'短T': {},
'背心': {}
},
'冬季': {
'羽绒服': {},
'毛衣': {}
}
},
'裤装': {
'春秋季': {
'牛仔裤': {},
'工装裤': {}
},
'夏季': {
'五分裤': {},
'七分裤': {}
},
'冬季': {
'加厚长裤': {},
},
}
},
'女装': {
'衣服': {
'春秋季': {
'大衣': {},
'风衣': {},
'毛衣': {}
},
'夏季': {
'短T': {},
'背心': {}
},
'冬季': {
'羽绒服': {},
'毛衣': {}
}
},
'裤装': {
'春秋季': {
'牛仔裤': {},
'工装裤': {}
},
'夏季': {
'五分裤': {},
'七分裤': {},
'长裙': {},
'短裙': {}
},
'冬季': {
'加厚长裤': {}
},
}
}
}
layers=[menu] #层级栈,用于存放层级
while True:
if len(layers)==0:break #当栈为空时退出
current_layer=layers[-1] #当前层级为栈顶元素
#当前层级没有选项时退出
if len(current_layer)==0:
break
#打印菜单
for i in current_layer:
print(i)
choice=input('>>').strip()
#退出
if choice=='q':
break
elif choice=='b':
layers.pop(-1) #弹出当前层,返回上一级
continue
elif choice in current_layer:
layers.append(current_layer[choice]) #更新当前层级
else :
continue
浙公网安备 33010602011771号