博客
关于我
Python进阶实战之三级菜单
阅读量:441 次
发布时间:2019-03-06

本文共 3752 字,大约阅读时间需要 12 分钟。

目录
Python从入门到放弃完整教程目录:

一、Python进阶实战之三级菜单

  1. 打印省、市、县三级菜单
  2. 可返回上一级
  3. 可随时退出程序

1.1 面条版

menu = {    '北京': {        '海淀': {            '五道口': {                'soho': {},                '网易': {},                'google': {}            },            '中关村': {                '爱奇艺': {},                '汽车之家': {},                'youku': {},            },            '上地': {                '百度': {},            },        },        '昌平': {            '沙河': {                '老男孩': {},                '北航': {},            },            '天通苑': {},            '回龙观': {},        },        '朝阳': {},        '东城': {},    },    '上海': {        '闵行': {            "人民广场": {                '炸鸡店': {}            }        },        '闸北': {            '火车战': {                '携程': {}            }        },        '浦东': {},    },    '山东': {},}tag = Truewhile tag:    menu1 = menu    for key in menu1:  # 打印第一层        print(key)    choice1 = input('第一层>>: ').strip()  # 选择第一层    if choice1 == 'b':  # 输入b,则返回上一级        break    if choice1 == 'q':  # 输入q,则退出整体        tag = False        continue    if choice1 not in menu1:  # 输入内容不在menu1内,则继续输入        continue    while tag:        menu_2 = menu1[choice1]  # 拿到choice1对应的一层字典        for key in menu_2:            print(key)        choice2 = input('第二层>>: ').strip()        if choice2 == 'b':            break        if choice2 == 'q':            tag = False            continue        if choice2 not in menu_2:            continue        while tag:            menu_3 = menu_2[choice2]            for key in menu_3:                print(key)            choice3 = input('第三层>>: ').strip()            if choice3 == 'b':                break            if choice3 == 'q':                tag = False                continue            if choice3 not in menu_3:                continue            while tag:                menu_4 = menu_3[choice3]                for key in menu_4:                    print(key)                choice4 = input('第四层>>: ').strip()                if choice4 == 'b':                    break                if choice4 == 'q':                    tag = False                    continue                if choice4 not in menu_4:                    continue                # 第四层内没数据了,无需进入下一层
北京上海山东第一层>>: 背景北京上海山东第一层>>: 北京海淀昌平朝阳东城第二层>>: 海淀五道口中关村上地第三层>>: 中关村爱奇艺汽车之家youku第四层>>: q

1.2 文艺青年版

menu = {    '北京': {        '海淀': {            '五道口': {                'soho': {},                '网易': {},                'google': {}            },            '中关村': {                '爱奇艺': {},                '汽车之家': {},                'youku': {},            },            '上地': {                '百度': {},            },        },        '昌平': {            '沙河': {                '老男孩': {},                '北航': {},            },            '天通苑': {},            '回龙观': {},        },        '朝阳': {},        '东城': {},    },    '上海': {        '闵行': {            "人民广场": {                '炸鸡店': {}            }        },        '闸北': {            '火车战': {                '携程': {}            }        },        '浦东': {},    },    '山东': {},}# part1(初步实现):能够一层一层进入layers = [    menu,]while True:    current_layer = layers[-1]    for key in current_layer:        print(key)    choice = input('>>: ').strip()        if choice == 'q':        break    if choice not in current_layer: continue    layers.append(current_layer[choice])# part2(改进):加上退出机制layers = [    menu,]while True:    if len(layers) == 0: break    current_layer = layers[-1]    for key in current_layer:        print(key)    choice = input('>>: ').strip()    if choice == 'b':        layers.pop(-1)        continue    if choice == 'q': break    if choice not in current_layer: continue    layers.append(current_layer[choice])
北京上海山东>>: 上海闵行闸北浦东>>: 浦东>>: q北京上海山东>>: q

转载地址:http://pbgyz.baihongyu.com/

你可能感兴趣的文章
MySQL底层概述—6.索引原理
查看>>
MySQL底层概述—7.优化原则及慢查询
查看>>
MySQL底层概述—8.JOIN排序索引优化
查看>>
MySQL底层概述—9.ACID与事务
查看>>
Mysql建立中英文全文索引(mysql5.7以上)
查看>>
mysql建立索引的几大原则
查看>>
Mysql建表中的 “FEDERATED 引擎连接失败 - Server Name Doesn‘t Exist“ 解决方法
查看>>
mysql开启bin-log日志,用于canal同步
查看>>
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
查看>>
MySQL异步操作在C++中的应用
查看>>
MySQL引擎讲解
查看>>
Mysql当前列的值等于上一行的值累加前一列的值
查看>>
MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
查看>>
MySQL必知必会(组合Where子句,Not和In操作符)
查看>>
MySQL必知必会总结笔记
查看>>
MySQL快速入门
查看>>
MySQL快速入门——库的操作
查看>>
mysql快速复制一张表的内容,并添加新内容到另一张表中
查看>>
mysql快速查询表的结构和注释,字段等信息
查看>>
mysql怎么删除临时表里的数据_MySQL中关于临时表的一些基本使用方法
查看>>