三级菜单作业
作业需求:
数据结构:
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
本来觉得三级菜单是有点难度的,想不到从哪里下手,但是后来仔细想了一下还是没有思路,那就直接写,
然后第一次写出来的用了一个while循环只能一级一级的往下去不能返回,
再然后吃了一个饭忽然想起来了,大概思路就是用多个while循环嵌套,返回上一级就打破当前的while,然后就会返回到上一级的while循环,依次类推
再就是continue的运用,当输入的是错误的信息时就直接跳出这一次循环,感觉非常好用
虽然代码还可以进行优化,但是自己能写出这样的就很不错了,还加深了对while循环break和continue的理解
不说了,直接上代码
#数据结构:
'''需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典'''
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
while (1):
for i in menu:
print(i)
choice=input('>>').strip()
while(1):
if choice in menu:
print ('进入第一层')
for i in menu[choice]:
print(i)
choice2 = input('>>').strip()
if (choice2 == 'return'): #if elif 的区别?不要和c++中的else if 混淆!!
print('已经返回到最上一层')
break
if choice2 in menu[choice]:
pass #用pass语句防止报错
else:
print("输入有误请重新输入1层");
continue
while (1):
if choice2 in menu[choice]:
print ('进入第二层')
for i in menu[choice][choice2]:
print (i)
choice3 = input('>>').strip()
if (choice3=='return'):
break
if choice3 in menu[choice][choice2]:
while (1):
if choice3 in menu[choice][choice2]:
print('进入第三层')
for i in menu[choice][choice2][choice3]:
print(i)
choice4 = input('>>').strip()
if (choice4 == 'return'):
break
else:
print("输入有误请重新输入3层")
else:
print("输入有误请重新输入2层");

浙公网安备 33010602011771号