昨天完成了三级菜单和购物车程序的作业:

""" .__author__.=,"JerseyHg"

作业要求:1. 可依次选择进入到下一级菜单;2. 可从任意i一层往回退到上一层;3. 可从任意一层退出程序。

思路:1. 定义字典;        2. while [如果一直没有按退出键,则一直true,循环继续——保证即使不输入,程序也不停地在运行];            3. 打印出字典中第一级——key [for 语句];            4. 让用户输入选择              a. 进入到下一级              b. 当按返回键时——按返回键,会定义此循环false——退出此循环,进入循环同等级的下一条语句——此条语句的目的则为定义该返回键为true,以免导致上一级的循环也被false;              c. 当按中断键时——按终止键,则不再在结束此级循环的语句下加定义终止状态为true,以确保终止此次循环后,在返回上一级循环的时候仍旧为false,继续终止循环,直到退出所有的循环,结束程序。"""menu = {    '北京': {            '海淀': {                     '五道口': {                         'soho': {}, '网易': {}, 'google': {}                      },                     '中关村': {                         '爱奇艺': {}, '汽车之家': {}, '优酷': {}                     },                     '上地': {                         '百度': {}                     }            },            '昌平':{                     '沙河': {                         '老男孩': {}, '北航': {}                     },                     '天通苑': {},                     '回龙观': {}            },            '朝阳': {},            '东城': {}    },    '上海': {            '闵行': {                    '人民广场': {                        '炸鸡店': {}                    }            },            '闸北': {                    '火车站': {                        '携程': {}                    }            },            '浦东': {}    },    '山东': {}}——————————————————————————————————————————————————————黄色部分是设置的字典部分,以供下面程序进行查询——————————————————————————————————————————————q = TrueQ = True——————————————————————————————————————————————————————红色部分的作用是为了提供了bool变量,使while循环语句进行相应的判断,如果用户在想返回上一级菜单的时候,那么就在提示的时候键入q,如果想退出程序就键入Q(虽然这里两个变量都是True,但是如果键入后

while q and Q:                                                             # 判断有没有按退出键,如果没有按,则进行第一级while循环    for i in menu:        print(i)    province = input('请输入你要查找的省份或者输入Q退出程序:')              # 输入你想要查询的城市名称    if province in menu:                                                  # 如果你上一步输入的城市名称在menu字典中,那么进行下一级的城市搜索中———————————————————————————————————————————————————————绿色部分的作用是  1.如果判断条件是True,那么久进入以下的循环;——————————————————————————————————————————————————————————————————————————————————————————————                                                                       2.首先将menu字典的第一级key打印出来,以供用户选择;                                                                       3.判断用户是否输入的是第一级key中的值,如果是的,则进入下一级菜单; 
        while q and Q:            for city in menu[province]:                print(city)            city = input('请输入你要查找的城市或者输入q返回,Q退出程序:')            if city in menu[province]:                                     # 如果输入的内容在city列表里面,那么就进行区的检索,或者输入的值是q则跳出此级循环,返回上一级菜单,或者输入的为Q,那么就跳出整个循环;
——————————————————————————————————————————————————————蓝色部分的作用是  1.如果判断条件是True,那么久进入以下的循环;————————————————————————————————————————————————————————————————————————————————————————————————
                                                                      2.首先将menu字典的第一级key打印出来,以供用户选择;                                                                      3.判断用户是否输入的是第一级key中的值,如果是的,则进入下一级菜单;
                while q and Q:                    for district in menu[province][city]:                        print(district)                    district = input('请输入你要查找的街道或者输入q返回,Q退出程序')                    if district in menu[province][city]:
——————————————————————————————————————————————————————橙色部分的作用是  1.如果判断条件是True,那么久进入以下的循环;
                                                                      2.首先将menu字典的第一级key打印出来,以供用户选择;                                                                      3.判断用户是否输入的是第一级key中的值,如果是的,则进入下一级菜单;
while q and Q:                            for place in menu[province][city][district]:                                print(place)                            place = input('已经到达最后一页,按q返回,Q退出程序:')                            if place == 'q':                                q = False                            elif place == 'Q':                                Q = False                            else:                                print('输入错误!')                        q = True———————————————————————————————————————————————————————对应上面黑色部分 1.如果判断条件是True,那么久进入以下的循环;
                                                                      2.首先将menu字典的第一级key打印出来,以供用户选择;                                                                      3.判断用户是否输入的是第一级key中的值,如果是的,则进入下一级菜单;
                                                                      4.如果判断出用户输入的是q,那么就使bool变量q变为False(这么做的原因是可以让程序再次进入该层while判断的时候,能够让退出该层循环)*****但是需要注意的是,q的作用只是退出该层循环,返回到上层中,所以我们再结束该层while循环的后面,需要加上让q重新返还成True的语句,以免导致继续向上层退出循环*****
                                                                      5.如果判断出用户输入的是Q,那么就使bool变量Q变为False,让程序跳出while循环
                                                                      6.如果判断用户输入的值,不属于以上3,4中的任何值,那么就输出“用户输入错误!”
                    elif district == 'q':                        q = False                    elif district == 'Q':                        Q = False                    else:                        print('输入错误!')                q = True———————————————————————————————————————————————————————对应上面蓝色部分 4.如果判断出用户输入的是q,那么就使bool变量q变为False(这么做的原因是可以让程序再次进入该层while判断的时候,能够让退出该层循环)*****但是需要注意的是,q的作用只是退出该层循环,返回到上层中,所以我们再结束该层while循环的后面,需要加上让q重新返还成True的语句,以免导致继续向上层退出循环*****
                                                                      5.如果判断出用户输入的是Q,那么就使bool变量Q变为False,让程序跳出while循环
                                                                      6.如果判断用户输入的值,不属于以上3,4中的任何值,那么就输出“用户输入错误!”
            elif city == 'q':                                               # 如果输入的是q,则将q的值变为false,以此让while循环判断为false,跳出此次循环,跳出了此次循环后,要将上一级while的q改为true                q = False            elif city == 'Q':                Q = False            else:                print('输入错误!')        q = True——————————————————————————————————————————————————————对应上面蓝色部分 4.如果判断出用户输入的是q,那么就使bool变量q变为False(这么做的原因是可以让程序再次进入该层while判断的时候,能够让退出该层循环)*****但是需要注意的是,q的作用只是退出该层循环,返回到上层中,所以我们再结束该层while循环的后面,需要加上让q重新返还成True的语句,以免导致继续向上层退出循环*****
                                                                      5.如果判断出用户输入的是Q,那么就使bool变量Q变为False,让程序跳出while循环

                                                                      6.如果判断用户输入的值,不属于以上3,4中的任何值,那么就输出“用户输入错误!”
    elif province == 'Q':        Q = False    else:        print('输入错误')
———————————————————————————————————————————————————————对应上面绿色部分 4.如果判断出用户输入的是Q,那么就使bool变量Q变为False,让程序跳出while循环————————————————————————————————————————————————————————————————————————————————————                                                                      5.如果判断用户输入的值,不属于以上3,4中的任何值,那么就输出“用户输入错误!”
 

DAY.15_Python的更多相关文章

  1. 15_Python函数名本质

    函数名的本质 函数名实质上就是函数的内存地址 def wrapper(): pass print(wrapper) 1.引用是什么? 当我们定义a=1的时候,系统会开辟一块内存空间来保存1,然后用a变 ...

  2. 15_Python模块化编程_Python编程之路

    之前跟大家讲的是一些python的数据基础,从这篇文章开始,我们开始正式学习python的模块化编程 下面我们解释一下什么叫做模块 之前已经讲过怎么去定义一个方法,如果你是用python交互器(自带交 ...

  3. 【Python基础】15_Python中的变量-进阶

    1.引用的概念 2.可变类型和不可变类型 3.哈希

  4. 15_Python的模块module

    1.模块的概述 1.模块是Python程序架构的一个核心概念,每一个以.py结尾的Python源代码文件都是一个模块 2.模块名和标识符的命名规则一样,由数字字母下划线组成且不能以数字开头,也不要和系 ...

  5. python学习——读取染色体长度(七:读取fasta文件)

    读取fasta文件genome_test.fa,并计算染色体总长,同时输出最长染色体编号.序列以及长度 fasta文件genom_test.fa的内容如下: >chr1ATATATATAT> ...

随机推荐

  1. xml(带有命名空间的)读写操作

    xml文件: <?xml version="1.0" encoding="UTF-8"?><!-- This file contains jo ...

  2. MySql必知必会实战练习(四)主键、外键、sql约束、联结表

    本博将对主键.外键.MySql数据库约束和联结表的相关特性进行总结和实战 1. 主键 表中的每一行都应该具有可以唯一标识自己的一列(或一组列),而这个承担标识作用的列称为主键 如果没有主键,数据的管理 ...

  3. Sublime Text 3下Emmet使用技巧

    链接:http://jingyan.baidu.com/article/92255446a87900851648f4d6.html

  4. IOS socket编程--Asyncsocket

    iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它来简化CFNetwork的调用,它提供了异步操作 主要特性有: 队列的非阻塞的读和写, ...

  5. 剑指offer-第六章面试中的各项能力之总结

  6. 数据库SQL、SQLite语句单引号、双引号的用法

    最近编程操作数据库语句的时候出现一些问题. 关于Insert字符串 ,在(单引号,双引号)这个方面发生了问题,其实主要是因为数据类型和变量在作怪. 下面我们就分别讲述,虽然说的是Insert语句, 但 ...

  7. 给UIButton设置阴影及动画组

    //设置“开启旅程”按钮 UIButton *startBtn = self.startBtn; CGFloat btnW = ; CGFloat btnH = ; CGFloat btnX = (s ...

  8. LA2797 Monster Trap

    题意 PDF 分析 可以考虑建图,跑迷宫. 然后以线段端点,原点,和无穷大点建图,有边的条件是两点连线和墙没有交点. 但是对两个线段的交点处理就会有问题,所以把线段延长.另外还需要判断延长后在墙上,舍 ...

  9. 监听文本框输入oninput和onpropertychange事件

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydow ...

  10. 关于setdefault和defaultdict

    c参考链接:http://blog.csdn.net/real_ray/article/details/17919289 defaultdict就是为没有的键给一个默认的值,实际是实现了一个__mis ...