三级菜单菜鸟版

  • 这是参加路飞的第一个作业

需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典

解题思路:

1先找到最大最里面的一层,然后一层一层的取数据,该字段最深四层
2使用一个最外层循环,取到最外层的名称:上海,北京…
3让用户输入城市名称,去除空格和换行
4如果用户输入q,退出本次循环
5如果输入为空,终止本次循环
6如果输出的城市在menu列表中,取到该城市对应的值
7如果该城市的值为空,打印该字段为最后一层。
8下面三层也是一样的方法,
9用户输入b退回上一层
10但是里面三个退出程序用quit()直接退出程序。

逗比青年版:

#!/usr/bin/python
# -*- coding:utf-8 -*-
# Python:就业班-HuangPei
# data_time:20201113
"""
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
作业效果展示:

"""

menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车站': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}


while True:
    # 打印父级城市
    print("这是顶层")
    for i in menu:
        print(i)
    city_name = input("请输入城市名称(q退出程序):").strip()  # strip()  去除空格和换行
    if city_name == 'q':break
    # elif city_name is None: continue  不知为啥这个方法在这里用不了
    elif not city_name:continue
    elif city_name in menu:
        if len(menu[city_name]) < 1:
            print("已经是最后一层了~~")
        # print(menu[city_name])
        else:
            while True:
                print("第二层")
                for i in menu[city_name]:
                    print(i)
                city_name1 = input("请输入城市名称(b返回上一层,q退出程序):").strip()
                if city_name1 == 'b':break
                elif city_name1 == 'q':quit()
                elif not city_name1:continue
                elif city_name1 in menu[city_name]:
                    # print(menu[city_name][city_name1])
                    if len(menu[city_name][city_name1]) < 1:
                        print("已经是最后一层了~~")
                    else:
                        while True:
                            print("第三层")
                            for i in menu[city_name][city_name1]:
                                print(i)
                            city_name2 = input("请输入城市名称(b返回上一层,q退出程序):").strip()
                            if city_name2 == 'b':break
                            elif city_name2 == 'q':quit()
                            elif not city_name2:continue
                            elif city_name2 in menu[city_name][city_name1]:
                                if len(menu[city_name][city_name1][city_name2]) < 1:
                                    print("已经是最后一层了~~")
                                # print(menu[city_name][city_name1][city_name2])
                                else:
                                    while True:
                                        print("第四层")
                                        for i in menu[city_name][city_name1][city_name2]:
                                            print(i)
                                        city_name3 = input("请输入城市名称(b返回上一层,q退出程序):").strip()
                                        if city_name3 == 'b':break
                                        elif city_name3 == 'q':quit()
                                        elif not city_name3:continue
                                        elif city_name3 in menu[city_name][city_name1][city_name2]:
                                            if len(menu[city_name][city_name1][city_name2][city_name3]) < 1:
                                                print("已经是最后一层了~~")
                                            else:
                                                print(menu[city_name][city_name1][city_name2][city_name3])
                                        else:
                                            print("没有这个城市")
                                            continue
                            else:
                                print("没有这个城市")
                                continue
                else:
                    print("没有这个城市")
                    continue

    else:
        print("没有这个城市")
        continue

屌丝青年版:

menu_list = [ menu ]
current_list = menu  # 当前层

while True:
    for key in current_list:
        print(key)
    name = input("请输入城市名称:").strip()  # 去除空格换行
    if len(name) == 0:continue
    if name in current_list:  # 进入下一层
        menu_list.append(current_list)  # 当前层添加到列表
        current_list = current_list[name]  # 北京
        
    if name == 'b':
        if menu_list:
            current_list = menu_list[-1]  # 取到上一层,赋值给menu_list
            menu_list.pop()
            
    if name == 'q':
        break

总结:

逗比青年版的代码是我自己撸的,虽然有点乱也是自己写的,就是慢慢培养思路吧!加油吧 小伙伴们,希望能帮助到你们!