day1作业二:多级菜单

    作业二:多级菜单

1.三级菜单

2.可以次选择进入各子菜单

3.所需新知识点:列表、字典

  4.打印b回到上一层

  5.打印q退出循环

流程图如下:

readme:

(1)存储三级菜单的字典;设置标识符active用来循环;

  (2)生成存储省市的字典,d1 = {1: ‘河南‘, 2: ‘广东‘, 3: ‘湖南‘};

  (3)用户输入查询编码,如果用户输入q退出循环;如果用户输入小于1或大于3则重新输入;输入编码在range(1,4)中,则输出省,并继续循环;

  (4)生成存储市的字典d2 = {1: ‘开封‘, 2: ‘洛阳‘, 3: ‘周口‘, 4: ‘南阳‘};

  (5)用户输入市编码,如果输入b,返回上一层循环;如果输入q,退出整个循环;如果输入大于4或小于1,提示输入的编码不对,重新让用户输入;如果输入编码在range(1,5)中,则打印省和市并继续循环;

  (6)生成省和市对应的区或县列表l1 = [‘邓州市‘, ‘镇平县‘, ‘西峡县‘, ‘新野县‘, ‘唐河县‘];

  (7)让用户输入市下面区或县的编码,由于列表是有序的,不需要生成字典;将用户输入的编码作为索引,如果用户输入b,则返回上一层循环;如果用户输入q退出整个循环;用户输入编码大于或小于列表索引长度,则提示用户重新输入编码;如果用户输入索引范围没有超过列表长度,则打印省、市和县或区。

  (8)结束过程。

程序如下:

#定义一个三级菜单字典
dic = {"河南":{"南阳":["邓州市","镇平县","西峡县","新野县","唐河县"],
               "洛阳":["涧西区","西工区","偃师市","孟津县"],
               "周口":["川汇区","西华县","商水县","淮阳县"],
               "开封":["龙亭区","顺河区","鼓楼区","祥符区"],
             },
        "湖南":{"长沙":["芙蓉区","岳麓区","天心区","长沙县"],
                "益阳":["资阳区","赫山区","沅江市","安化县"]
               },
        "广东":{"深圳":["罗湖区","福田区","宝安区","盐田区","龙岗区"],
                "广州":["天河区","越秀区","白云区","黄埔区","番禺区"],
               }
       }

active = True    #设置一个标识符,用于用户输入"q"时退出整个循环

d1 = {}
#设置一个空字典用来存放”省“
for index,province in enumerate(dic.keys(),1):
    d1[index] = province
    print("地区编号:%s       地区名称:%s" %(index,province))
while active:
    #整个程序的循环,默认一直执行
    num1 = input("请输入要查询省的编号(q为退出):")
    #让用户输入要查询的省的编号
    if num1 == "q":
        #如果用户输入"q"则退出循环
        active = False
    elif int(num1)>len(d1) or int(num1) < 1:
        #如果用户输入的数字不在编码里面,则提示用户重新输入
        print("你输入的编号不对,请重新核对后输入")
    else:
        #如果用户输入正确,则打印相应的省,要使用用户输入的编号,因为我们对比的时候用的就是用户输入的编号
        print(d1[int(num1)])

    d2 = {}
    #定义一个空字典,用于存放市
    for index1,city in enumerate(dic[d1[int(num1)]],1):
        d2[index1] = city
        print("城市编号:%s       城市名称:%s" %(index1,city))
    while active:
        #循环,input()函数要放在循环里面,这样循环的时候才能交互让用户一直输入
        num2 = input("请输入你要查询的城市编号(q为退出或b为返回上一层):")
        if num2 == "q":
            active = False
        elif num2 == "b":
            break
        elif int(num2)>len(d1) or int(num2) < 1:
            print("你输入的查询编号不对,请核对后重新输入......")
        else:
            #打印省市
            print(d1[int(num1)],"     ",d2[int(num2)])
        # while active:
        #while active:
        l1 = dic[d1[int(num1)]][d2[int(num2)]]
        #定义一个列表,用户存放省市下面的县,是一个列表
        while active:
            for i in range(1,len(l1)+1):
                print("市区编号:%s       市区名称:%s" %(i,l1[i-1]))
            num3 = input("请输入您要查询的市区编号:")
            if num3 == "q":
                #active用来退出整个循环,退出程序
                active = False
            elif num3 == ‘b‘:
                #break用来退出当前存放
                break
            elif int(num3) > len(l1) or int(num3) < 1:
                print("你输入的查询编号不对,请核对后重新输入...")
            else:
                print(d1[int(num1)],"     ",d2[int(num2)],"     ",l1[int(num3)-1])

学习感悟:

  (1)在这个小程序的编写中,加强了自己对列表,字典知识的掌握;

  (2)了解了在循环中,嵌套的循环的时候设置标识符active = True,可以用来退出整个循环,而每个循环中的break用来退出当前while循环,并且会返回上一层循环;

  (3)字典的嵌套,只要掌握基础列表,字典的常用功能,列表程序运行中得到的是什么,本质上就是对基础功能的使用;

  (4)要经常会过头来复习

代码的不足之处:

  (1)上面代码字典不是有序的,我们在运行的过程中可以发现,省市的编码顺序一直在改变,尝试使用collections中的模块OrderedDict()字典方法没有结果,因为OrderedDict()方法要用户输入键-值对,把用户输入的顺序作为顺序,不能直接定义一个字典d = {"k1":"v1","k2":"v2"},dic = collections.OrderedDict(d)是不可用的,生成的字典不是有序的。

  (2)网页的后台信息在数据库中存储的模式很好奇,是以字典形式存储还是文本字符串形式存储,不过猜想应该是字典的形式,文本字符串的处理方式比较麻烦。  

时间: 2024-10-10 11:31:50

day1作业二:多级菜单的相关文章

day1作业二:多级菜单操作(函数实现)

作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下: 香港: 香港 澳门: 澳门 台湾: 台湾 钓鱼岛: 钓鱼岛 北京市: - 市辖区 - 东城区 - 西城区 - 崇文区 - 宣武区 - 朝阳区 河北省: - 石家庄市: - 长安区 - 桥东区 - 桥西区 - 新华区 - 唐山市: - 路南区 - 路北区 - 古冶区 - 开平区 - 秦皇岛市: -

day1作业二:多级菜单操作

作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入b返回上一层,输入q退出整个程序

python作业:多级菜单

python作业: 要求: 1.三级菜单 2.选择可以依次进入子菜单 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #__author__ = 'Administrator' 4 5 data={ 6 'china':{ 7 'zhejiang':{ 8 '杭州', 9 '宁波', 10 '余姚', 11 '建德', 12 }, 13 'jiangxi':{ 14 '上饶', 15 '南昌', 16 '瑞金', 17 '德兴', 18 '广丰'

老男孩DAY1作业二

作业内容: (1)编写登录接口 (2)认证成功后显示欢迎信息 (3)输错三次锁定 以下为代码,分为两个部分的代码,一是register.py,另一个是login.py:其中register.py实现的注册功能,客户可输入用户名密码,用户名密码保存在txt文件中:login.py代码实现的是以下几个功能点: (1)如果不存在该用户名,提示用户未注册: (2)如果用户名在黑名单中,提示用户与管理员联系: (3)如果密码输入正确,登录成功:如果密码输入错误,可以试三次,如果三次仍未成功,则将该用户名锁

Day1作业---登录接口及多级菜单

作业一:编写登录接口 输入用户密码 认证成功后显示欢迎信息 输错三次后锁定 作业二:多级菜单 三级菜单 可一次选择进入各子菜单 所需新知识点:列表.字典

Day1作业: 登录接口和多级菜单

1.登录接口  实现功能: 1用户注册 2用户登录 3用户名是否存在 4密码错误三次锁定,并更新用户锁定状态 5用户锁定状态匹配   流程图  涉及到1个文件作为库 passwd      #用户密码文件,1为锁定状态 zhy:123456:0alex:234567:0xiaoming:45678:1 1 #!/usr/bin/env python3 2 #coding:utf-8 3  4 user_name = input("请输入用户名:") 5 n = 0 6 line = &

python作业5:多级菜单

# 作业5:多级菜单# ● 三级菜单,省.市.县.公司,要求程序启动后,允许用户依次选择进入各子菜单# ● 可以在任意一级菜单返回上级菜单,也可以退出程序# ● 所需新知识点:列表.字典## 思路:# 先创字典,字典三层嵌套#逐层提取key字段,#先不管各种可能,把主程序写好,即各种选择都是好好的情况下能实现的功能,再补充各种可能#这个地方其实是重点考察while循环里面的continue和break#出于程序简化,没有考虑输入数字超范围.输入的不是数字.q.b三者以外的情况 dict1 ={

老男孩python3学习,课堂作业1.2 多级菜单查询

# Version: python3.6# Author: Gao# 多级菜单:三级菜单,可依次选择进入子菜单,列表,字典 city_dict = { "四川省": { "成都市": ["锦江区", "青羊区", "金牛区", "武侯区", "成华区", "龙泉驿区"], "攀枝花市": ["东区", &qu

python作业-多级菜单

练习python多级菜单的读功能,其实就是列表或者字典的iter 功能要求: 运行程序输出第一级菜单 选择一级菜单某项,输出二级菜单,同理输出三级菜单 菜单数据保存在文件中 让用户选择是否要退出 有返回上一级菜单的功能 下面是一个简单版本的:通过逐步迭代读取列表,这里其实可以看到有好多的重复代码.比如每次都迭代menu_dict[choice].. 文艺青年版其实就是将之前一直重复使用的东西给弄成变量,然后每次选择完之后重新给men_dict赋值 原文地址:http://blog.51cto.c