Python【三级菜单】练习

Python【三级菜单】练习
数据结构:

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

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

初级版:用多个while完成,代码较多,适合入门理解

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车站':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
active= True  #控制整个进程
while active:
    print('----请您在以下的城市中选择你想去的城市----')
    print('"q"退出程序 ')
    for city_print in menu:
        print(city_print)
    city=input("请输入你想去的城市(“q”退出系统)>>>")
    if city == 'q':
        exit()
    elif city not in menu:
        print("*输入错误请重新输入*")
    else:
        while active:
            print('----请您在以下的城区中选择你想去的城区----')
            print('"q"返回上一级  "Q"退出程序 ')
            for district_print in menu[city]:
                print(district_print)
            distric=input("请输入你想去的城区>>>")
            if distric =='q':
                break
            elif distric == 'Q':
                active=False
            elif distric not  in menu[city]:
                print('*输入错误,请重新输入*')
            else:
                while active:
                    print('----请您在以下的街道中选择你想去的街道----')
                    print('"q"返回上一级  "Q"退出程序 ')
                    for street_print in menu[city][distric]:
                        print(street_print)
                    street = input('请输入你想去的街区>>>')
                    if street=='q':
                        break
                    elif street == 'Q':
                        active==False
                    elif street not in menu[city][distric]:
                        print('*输入错误,请重新输入*')
                    else:
                        while active:
                            print('----请您在以下的公司中选择你想去的公司----')
                            print('"q"返回上一级  "Q"退出程序 ')
                            for company_print in menu[city][distric][street]:
                                print(company_print)
                            company=input('请输入你想去的公司(“q”返回上一级)>>>')
                            if company=='q':
                                break
                            elif company=='Q':
                                active =False
                            elif company not in menu[city][distric][street]:
                                print('*输入错误,请重新输入*')
                            else:
                                print('恭喜你找到合适的公司')
                                active =False
print("----- 程序结束-----")

 升级版:只有一个while语句,利用创建一个空列表接受父类菜单

PS:退出返回上一层功能不咋会弄了,有没有大神给我个思路

#coding=utf-8
_date_ = '2018/10/21 15:41'
menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车站':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
menu_copy =menu
main_menu=[]
active=True
while active:
    for key in menu_copy:
        print(key)
        main_menu.append(key)
    uesr_get = input("输入你想去的地方或公司:")
    if uesr_get in main_menu:
        print("'Q'退出选择程序  'q'返回上一级 ")
        if bool(menu_copy[uesr_get]) == False:
            print("选择完成")
            exit()
        menu_copy = menu_copy[uesr_get]
        continue
    elif uesr_get == "q":
        pass

    elif uesr_get =="Q":
        print("退出完成")
        active=False
    else:
        print("输入出错,请重新选择")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

404NooFound

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值