Python入门练习题(3)-三级菜单

三级菜单
· 现有省、市、县3级结构,要求程序启动后,允许用户可依次选择进入各子菜单
· 可在任意—级菜单返回上—级
· 可以在任意—级菜单退出程序
环境:Pycharm,Python3.7

#_*_coding:utf-8_*_

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车战':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
print("q for returning to the previous unit and e for exiting")
while True:
    for i in menu.keys():
        print(i)
    choose1=input("which choice do u want to select:")
    flag=1
    #设置标志以便于返回各个节点,不知道有没有类似C语言goto的东西
    while flag:
        if choose1 in menu.keys():
            if len(menu[choose1])!=0:
            #这个地方有点坑,有些键里面的值是空的,要做一个判断先
                for i in menu[choose1].keys():
                    print(i)
                    flag=0
            else:
                flag=0
        elif choose1 == 'q':
            flag=0
            continue
        elif choose1 == 'e':
            exit()
        else:
            print("erro\n")
            flag=0
            continue

        flag2=1
        #同flag1
        choose2=input("which choice do u want to select:")
        while flag2:
            if choose2 in menu[choose1].keys():
                if len(menu[choose1][choose2])!=0:
                    for i in menu[choose1][choose2].keys():
                        print(i)
                        flag2=0
                else:
                    flag2=0
            elif choose2 == 'q':
                flag2=0
                continue
            elif choose2 == 'e':
                exit()
            else:
                print("erro\n")
                flag2=0
                flag=1
                continue

            flag3=1
            #同flag1
            choose3=input("which choice do u want to select:")
            while flag3:
                if choose3 in menu[choose1][choose2].keys():
                    if len(menu[choose1][choose2][choose3])!=0:
                        for i in menu[choose1][choose2][choose3].keys():
                            print(i)
                            flag3=0
                    else:
                        flag3=0

                elif choose3 == 'q':
                    flag3=0
                    flag=1
                    continue
                elif choose3 == 'e':
                    exit()
                else:
                    print("erro")
                    flag3=0
                    flag2=1
                    break
                choose4=input("Try again? (y/n)" )
                if choose4 == 'y':
                    continue
                else:
                    exit()

2018.7.25

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章