三级菜单作业

作业需求:

数据结构:

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层");

  

 
posted @ 2018-05-20 19:02  刘冬冬的博客  阅读(626)  评论(0编辑  收藏  举报