python三级菜单

 三级菜单:1.打印省、市、县三级菜单      2.可随时返回上一级      3.可随时退出程序

  北京

山东

上海

>:北京

    朝阳

    昌平

    海淀

>:昌平

    沙河

    天通苑

 

>:沙河

    阿泰包子

    b 任何一层输入b,可以返回上一层

    q 退出程序





menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车战':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
exit_flag=True             #定义变量条件,改变条件程序结束
while exit_flag:           #当exit_flag=True时输出menu[key],第一层菜单
    for key in menu:
        print(key)
    choice=input(">:").strip()       #定义变量输入choice
    if choice =='q':                 #当输入“q”退出整个程序
        exit_flag=False
        continue
    if len(choice) == 0:             #当输入变量为空时,结束本次循环,重新开始本层循环
        continue

    if choice in menu:               #判断输入变量choice是否在menu中
        while exit_flag:
            net_layer = menu[choice]    #给予menu[choice]定义本层菜单新变量net_layer
            for key2 in net_layer:     #输出第二层菜单
                print(key2)
            choice2=input(">>:").strip()    #定义变量输入choice2
            if choice2 == "b":              #当输入变量choice2为“b”时,返回结束本层循环,返回上一层循环
                break
            if choice2=="q":             #当输入“q”退出整个程序
                exit_flag=False
                continue
            if len(choice2)==0:           #当输入变量为空时,结束本次循环,重新开始本层循环
                    continue

            if choice2 in net_layer:                #判断输入变量choice2是否在net_layer中
                while exit_flag:
                    net_layer2 = net_layer[choice2]    #给予net_layer[choice2]定义本层菜单新变量net_layer2
                    for key3 in net_layer2:           #输出第三层菜单
                        print(key3)
                    choice3=input(">>>:").strip()     #定义变量输入choice3
                    if choice3=="b":                  #当输入变量choice2为“b”时,返回结束本层循环,返回上一层循环
                        break
                    if choice=="q":                   #当输入“q”退出整个程序
                        exit_flag=False
                        continue
                    if len(choice3)==0:                #当输入变量为空时,结束本次循环,重新开始本层循环
                        continue

                    if choice3 in net_layer2:                #判断输入变量choice3是否在net_layer2中
                        net_layer3=net_layer2[choice3]       #给予net_layer2[choice3]定义本层菜单新变量net_layer3
                        for key4 in net_layer3:             #输出第四层菜单
                            print(key4)

                        choice4 = input(">>>>:").strip()      #定义变量输入choice3,此处防止上层操作结束后再次循环
                                                               #此处只要不输入choice4则程序就不会无限循环                                                       
                        if choice4 == 'b': break             
                        if choice4 == 'q':
                            exit_flag = True
                            continue

print("done!")

  





程序运行效果:

 






posted @ 2017-03-30 19:52  许二哈哈哈  阅读(1528)  评论(0编辑  收藏  举报