day1作业二:多级菜单

(野生程序员) (野生程序员)     2022-08-30     339

关键词:

    作业二:多级菜单

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

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

作业二:多级菜单(1)三级菜单(2)可以次选择进入各子菜单(3)所需新知识点:列表、字典要求:输入back返回上一层,输入quit退出整个程序本示例的三级菜单是一个yaml文件格式,格式如下: 香港:香港澳门:澳门台湾:台... 查看详情

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

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

day1(代码片段)

作业1编写登录接口?输入用户名密码?认证成功后显示欢迎信息?输错三次后锁定---思路:用户信息文件、密码文件、检测用户名,是否让登录用户名密码判定 作业2多级菜单市区县?三级菜单?可依次选择进入各子菜单?所需新知... 查看详情

day1作业要求

Day1作业作业需求博客模拟登录三级菜单博客地址杨振伟Day1博客地址模拟登录1.程序说明实现功能如下用户输入密码,密码验证后登录成功用户登录成功后提示登录信息用户输入3次错误密码后锁定2.程序测试账号测试账号:admin测... 查看详情

day1作业-三级菜单

#/usr/bin/envpython#-*-coding:utf-8-*-#Author:jenvid.yangimportjsonfilecontent=open(‘../config/menue.json‘)content=json.load(filecontent)print(type(content))filecontent.close()whileTrue:foriincontent: 查看详情

day1_作业2(三级菜单)--改进版

#!/usr/local/bin/python3#-*-coding:utf-8-*-province=‘江苏省‘:‘南京市‘:[‘秦淮区‘,‘玄武区‘,‘栖霞区‘],‘苏州市‘:[‘姑苏区‘,‘虎丘区‘,‘吴中区‘],‘无锡市‘:[‘滨湖区‘,‘惠山区‘,‘锡山区‘],‘浙江省‘:‘杭州市‘:[... 查看详情

老男孩day1作业二

作业内容:(1)编写登录接口(2)认证成功后显示欢迎信息(3)输错三次锁定 以下为代码,分为两个部分的代码,一是register.py,另一个是login.py;其中register.py实现的注册功能,客户可输入用户名密码,用户名密码保存在... 查看详情

day1-作业2

作业二:编写登陆接口输入用户名密码认证成功后显示欢迎信息输错三次后锁定编程思想:1.先初始化需要的值2.写主程序逻辑,判断账号密码3次记录黑名单,并锁定3.读取黑名单并判断是否输入为黑名单用户#!/usr/bin/envpython#-*-co... 查看详情

day1作业--登录接口

作业:编写登陆接口输入用户名密码认证成功后显示欢迎信息输错三次后锁定   知识:   1.循环的使用;  2.continue,break在循环中中断的作用;  3.文件的写入,读取;  4.各基础知识的穿插应用 &n... 查看详情

2.实现多级菜单

...点:列表,字典流程图:1#-*-coding:utf-8-*-2#Author:JACKZHAO34#作业3:多级菜单5#三级菜单6#可依次选择进入各子菜单7#所需新知识点:列表,字典89mydict={10‘广东‘:{11‘广州‘:{12‘越秀区‘:["越秀公园","中山纪念堂","镇海楼"],13‘白云 查看详情

团队作业4——第一次项目冲刺(alpha版本)day1

小队@JMUZJB-集美震惊部一、DailyScrumMeeting照片二、BurndownChart燃尽图三、项目进展1.界面屏幕开发中,原型设计完毕。2.服务器服务器由学校提供,后台逻辑已有。新的数据表已经建好。3.PM任务耗时由一星期升到一星期半。四、问... 查看详情

团队作业4——第一次项目冲刺(alpha版本)day1

小队@JMUZJB-集美震惊部一、DailyScrumMeeting照片二、BurndownChart燃尽图三、项目进展1.界面屏幕开发中,原型设计完毕。2.服务器服务器由学校提供,后台逻辑已有。新的数据表已经建好。3.PM任务耗时由一星期升到一星期半。四、问... 查看详情

java实现多级菜单(代码片段)

一:前言最近老师布置了给多级菜单的作业,感觉蛮有意思的,可以提升自己的逻辑!下面我写个简易版的多级菜单,本人还是菜鸟,欢迎各位给予宝贵的建议!二:正文由于是给各位演示,所有我... 查看详情

day1作业-模拟登录

#/usr/bin/envpython#-*-coding:utf-8-*-#Author:jenvid.yangimportgetpassimportshutiluserspwd={}#print(type(userspwd))userssta={}luser=[]count=0usercontent=open(‘../config/users.inf‘,‘r‘)forlineinusercon 查看详情

day1作业

importsys,os,getpassi=0whilei<3:name=input("请输入用户名:")lock_file=open(‘user.txt‘,‘r+‘)#打开文件查看是否有这个用户lock_list=lock_file.readlines()forlock_lineinlock_list:lock_line=lock_line.strip(‘ ‘)print(lock_li 查看详情

day1-作业

编写登陆接口输入用户名密码认证成功后显示欢迎信息输错三次后锁定代码如下:#!/usr/bin/envpython#-*-coding:utf-8-*-count=0name="hx"passwd="123"f=open(‘user_black‘,‘r‘)lock_file=f.read()f.close()name=input("请输入用户名:")foriinrange(1):iflock_fil 查看详情

day1作业:登录接口

   作业一:编写登陆接口    1.输入用户名和密码   2.认证成功后显示欢迎信息   3.输错三次后锁定   思路:   (1)用户输入用户名;  (2)去锁定文件中... 查看详情

day1作业

1#!/usr/bin/envpython2#-*-coding:utf-8-*-3#Author:Even456count=0#为了记录需求中3次输入错误避免的次数,计数项赋初始值7load=True#为了完成功能后退出,赋初始值8file=open("正确用户信息文件",‘r‘,encoding=‘utf-8‘)#打开正确用户信息文档,获... 查看详情