三级菜单菜鸟版
- 这是参加路飞的第一个作业
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
解题思路:
1先找到最大最里面的一层,然后一层一层的取数据,该字段最深四层
2使用一个最外层循环,取到最外层的名称:上海,北京…
3让用户输入城市名称,去除空格和换行
4如果用户输入q,退出本次循环
5如果输入为空,终止本次循环
6如果输出的城市在menu列表中,取到该城市对应的值
7如果该城市的值为空,打印该字段为最后一层。
8下面三层也是一样的方法,
9用户输入b退回上一层
10但是里面三个退出程序用quit()直接退出程序。
逗比青年版:
#!/usr/bin/python
# -*- coding:utf-8 -*-
# Python:就业班-HuangPei
# data_time:20201113
"""
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
作业效果展示:
"""
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车站': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
while True:
# 打印父级城市
print("这是顶层")
for i in menu:
print(i)
city_name = input("请输入城市名称(q退出程序):").strip() # strip() 去除空格和换行
if city_name == 'q':break
# elif city_name is None: continue 不知为啥这个方法在这里用不了
elif not city_name:continue
elif city_name in menu:
if len(menu[city_name]) < 1:
print("已经是最后一层了~~")
# print(menu[city_name])
else:
while True:
print("第二层")
for i in menu[city_name]:
print(i)
city_name1 = input("请输入城市名称(b返回上一层,q退出程序):").strip()
if city_name1 == 'b':break
elif city_name1 == 'q':quit()
elif not city_name1:continue
elif city_name1 in menu[city_name]:
# print(menu[city_name][city_name1])
if len(menu[city_name][city_name1]) < 1:
print("已经是最后一层了~~")
else:
while True:
print("第三层")
for i in menu[city_name][city_name1]:
print(i)
city_name2 = input("请输入城市名称(b返回上一层,q退出程序):").strip()
if city_name2 == 'b':break
elif city_name2 == 'q':quit()
elif not city_name2:continue
elif city_name2 in menu[city_name][city_name1]:
if len(menu[city_name][city_name1][city_name2]) < 1:
print("已经是最后一层了~~")
# print(menu[city_name][city_name1][city_name2])
else:
while True:
print("第四层")
for i in menu[city_name][city_name1][city_name2]:
print(i)
city_name3 = input("请输入城市名称(b返回上一层,q退出程序):").strip()
if city_name3 == 'b':break
elif city_name3 == 'q':quit()
elif not city_name3:continue
elif city_name3 in menu[city_name][city_name1][city_name2]:
if len(menu[city_name][city_name1][city_name2][city_name3]) < 1:
print("已经是最后一层了~~")
else:
print(menu[city_name][city_name1][city_name2][city_name3])
else:
print("没有这个城市")
continue
else:
print("没有这个城市")
continue
else:
print("没有这个城市")
continue
else:
print("没有这个城市")
continue
屌丝青年版:
menu_list = [ menu ]
current_list = menu # 当前层
while True:
for key in current_list:
print(key)
name = input("请输入城市名称:").strip() # 去除空格换行
if len(name) == 0:continue
if name in current_list: # 进入下一层
menu_list.append(current_list) # 当前层添加到列表
current_list = current_list[name] # 北京
if name == 'b':
if menu_list:
current_list = menu_list[-1] # 取到上一层,赋值给menu_list
menu_list.pop()
if name == 'q':
break
总结:
逗比青年版的代码是我自己撸的,虽然有点乱也是自己写的,就是慢慢培养思路吧!加油吧 小伙伴们,希望能帮助到你们!