zoukankan      html  css  js  c++  java
  • 老男孩python学习阶段性作业- 三级菜单

    作业:三级菜单

    数据结构:

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

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

    提交代码:

    #! /user/bin/env python
    # -*- coding:utf-8 -*-
    menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
        '上海': {
            '闵行': {
                "人民广场": {
                    '炸鸡店': {}
                }
            },
            '闸北': {
                '火车站': {
                    '携程': {}
                }
            },
            '浦东': {},
        },
        '山东': {},
    }
    
    while True:
        for i in menu:
            print(i)
            flag_1 = 1
        choice1 = input('请输入要查询的省/市名称,按q键退出>>:').strip()
        while flag_1:
            if choice1 in menu:
                if len(menu[choice1]) == 0:
                    print('无下级!')
                    flag_1 = 0
                else:
                    for j in menu[choice1]:
                        print(j)
                        flag_2 = 1
                    choice2 = input('请输入要查询的区/县名称,按b键返回上层,按q键退出>>:').strip()
                while flag_2:
                    if choice2 in menu[choice1]:
                        if len(menu[choice1][choice2]) == 0:
                            print('无下级!')
                        else:
                            for k in menu[choice1][choice2]:
                                print(k)
                        choice3 = input('是否继续查询?按任意键继续,按b键返回上层,按q键退出>>:').strip()
                        if choice3.lower() == 'q':
                            print('再见!')
                            exit()
                        elif choice3.lower() == 'b':
                            flag_1 = 1
                            break
                        else:
                            flag_1 = 0
                            flag_2 = 0
                    elif choice2 == '':
                        print('输入值不可为空,请重新输入!')
                        break
                    elif choice2.lower() == 'b':
                        flag_1 = 0
                        break
                    elif choice2.lower() == 'q':
                        print('再见!')
                        exit()
                    else:
                        print('输入值有误,请重新输入!')
                        break
            elif choice1 == '':
                print('输入值不可为空,请重新输入!')
                flag_1 = 0
            elif choice1.lower() == 'q':
                print('再见!')
                exit()
            else:
                print('输入值有误,请重新输入!')
                flag_1 = 0
    

    参考代码:

    #! /user/bin/env python
    # -*- coding:utf-8 -*-
    path = [{'北京': {
        '海淀': {'五道口': {'soho': {}, '网易': {}, 'google': {}}, '中关村': {'爱奇艺': {}, '汽车之家': {}, 'youku': {}}, '上地': {'百度': {}}},
        '昌平': {'沙河': {'老男孩': {}, '北航': {}}, '天通苑': {}, '回龙观': {}}, '朝阳': {}, '东城': {}},
             '上海': {'闵行': {'人民广场': {'炸鸡店': {}}}, '闸北': {'火车站': {'携程': {}}}, '浦东': {}}, '山东': {}}]
    while True:
        dict_cur = path[-1]
        print(path)
        for i in dict_cur: print(i)
        msg = input(">>>").strip()
        if msg in dict_cur and len(dict_cur[msg]) > 0:
            dict_cur = dict_cur[msg]
            path.append(dict_cur)
        elif msg in dict_cur:
            print('所选项下级内容为空')
        elif msg.upper() == "B" and len(path) > 1:
            path.pop()
        elif msg.upper() == "Q":
            break
        else:
            print('非法输入')
    print("再见")
    
  • 相关阅读:
    汉字编码问题
    C语言创建UTF8编码文本文件
    Know more about shared pool subpool
    SCN Headroom与时光倒流到1988年的Oracle数据库
    Know more about Enqueue Deadlock Detection
    11g新特性:RDBMS Component TRACE
    了解你所不知道的SMON功能(十一):OFFLINE UNDO SEGMENT
    了解11g OCM
    Bulk Collect/FORALL的性能测试
    【推荐】DBA必须了解的11g中的一些变化
  • 原文地址:https://www.cnblogs.com/zhanglongfei/p/11640270.html
Copyright © 2011-2022 走看看