WenRou's Blog

新浪微薄腾讯微薄

最新碎语:测试图片碎语哦

您的位置:WenRou's Blog >Python> Python第十六天 :三级菜单

Python第十六天 :三级菜单

#!/user/bin/python
# -*- coding:utf-8 -*-
#  _author: wenrouge

# 作业2:三级菜单
# 数据结构:
# menu = {
#     '北京':{
#         '海淀':{
#             '五道口':{
#                 'soho':{},
#                 '网易':{},
#                 'google':{}
#             },
#             '中关村':{
#                 '爱奇艺':{},
#                 '汽车之家':{},
#                 'youku':{},
#             },
#             '上地':{
#                 '百度':{},
#             },
#         },
#         '昌平':{
#             '沙河':{
#                 '老男孩':{},
#                 '北航':{},
#             },
#             '天通苑':{},
#             '回龙观':{},
#         },
#         '朝阳':{},
#         '东城':{},
#     },
#     '上海':{
#         '闵行':{
#             "人民广场":{
#                 '炸鸡店':{}
#             }
#         },
#         '闸北':{
#             '火车站':{
#                 '携程':{}
#             }
#         },
#         '浦东':{},
#     },
#     '山东':{},
# }
#
# 需求:
# 可依次选择进入各子菜单
# 可从任意一层往回退到上一层
# 可从任意一层退出程序
# 所需新知识点:列表、字典

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

run_flag = True
corrent_layer = menu
layer = []
while run_flag:
    for i in corrent_layer:
        print(i)
    choice = input("请输入你选择的地址(也可以输入b上一层,q退出):")
    if choice in corrent_layer:
        layer.append(corrent_layer.keys())
        corrent_layer = corrent_layer[choice]
        # print(layer)
    elif choice == 'b':
        if len(layer) != 0:
            corrent_layer = layer.pop()
            # print(layer)
        else:
            pass
    elif choice == 'q':
        run_flag = False
    else:
        print('请正确输入!')

版本二
update_menu = menu          # 定义临时保存菜单的变量
menu_list = []              # 定义存储每次菜单更新的列表
while True:
    print('-------- ' + str(list(update_menu.keys())) + '---------')
    input_choose = input("【b(B)返回,q(Q)退出】请输入你的选择:").strip()
    if input_choose in update_menu:
        menu_list.append(update_menu)                   # 把整个菜单(字典)当做一个列表元素存储
        update_menu = update_menu[input_choose]         # 更新菜单
    elif input_choose.lower() == 'b':
        if menu_list:                                   # 如果列表不为空
            update_menu = menu_list.pop()               # 将列表的最后一个元素(即上一个菜单状态)弹出
    elif input_choose.lower() == 'q':
        break
    else:
        print("输入错误,请重新输入")

---

转载请注明本文标题和链接:《Python第十六天 :三级菜单

分享到:

发表评论

27 + 5 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交