三级菜单练习

数据结构

menu = {

    '北京':{

        '海淀':{

            '五道口':{

                'soho':{},

                '网易':{},

                'google':{}

            },

            '中关村':{

                '爱奇艺':{},

                '汽车之家':{},

                'youku':{},

            },

            '上地':{

                '百度':{},

            },

        },

        '昌平':{

            '沙河':{

                '老男孩':{},

                '北航':{},

            },

            '天通苑':{},

            '回龙观':{},

        },

        '朝阳':{},

        '东城':{},

    },

    '上海':{

        '闵行':{

            "人民广场":{

                '炸鸡店':{}

            }

        },

        '闸北':{

            '火车站':{

                '携程':{}

            }

        },

        '浦东':{},

    },

    '山东':{},

}

需求:

  • 可依次选择进入各子菜单
  • 可从任意一层往回退到上一层
  • 可从任意一层退出程序

小白版

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车站':{
                '携程':{}
            }
        },
        '浦东':{
        },
    },
    '山东':{
        '济南':{},
        '青岛':{}
    }
}
print("在任意一层输入“q”退出,输入“b”返回上一层(除第一层外)")
while True:
    for i in menu:
        print(i)
    choice = input("请输入所要进入地区:").strip()
    if not choice:continue  # 输入不为空
    if choice in menu:
        while True:
            for i in menu[choice]:
                print(i)
            choice2 = input("请输入进入地区:").strip()
            if not choice2:continue
            if choice2 in menu[choice]:
                while True:
                    for i in menu[choice][choice2]:
                        print(i)
                    choice3 = input("请输入进入地区:").strip()
                    if not choice3:continue
                    if choice3 in menu[choice][choice2]:
                        while True:
                            for i in menu[choice][choice2][choice3]:
                                print(i)
                            choice_back = input("最后一层!返回还是退出?")
                            if choice_back == "q":
                                exit()
                            elif choice_back == 'b':
                                break
                    elif choice3 == 'b':
                        break
                    elif choice3 == "q":
                        exit()
            elif choice2 == 'b':
                break
            elif choice2 == "q":
                exit()
    elif choice == "q":
        exit()

 进阶版

 

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车站':{
                '携程':{}
            }
        },
        '浦东':{
        },
    },
    '山东':{
        '济南':{},
        '青岛':{}
    }
}
conj = menu
lis = []
while True:
    for i in conj:
        print(i)
    choice = input("请选择地区:").strip()
    if not choice:continue
    if choice in conj:
        lis.append(conj)
        conj = conj[choice]
    elif choice == "b":
        if len(lis) == 0:
            print('\033[41;1m 已回到顶层\033[0m')
        else:
            conj = lis.pop()
    elif choice == "q":
        exit()

  

posted @ 2018-08-24 11:42  混世妖精  阅读(215)  评论(0编辑  收藏  举报