Python (用户登录、身份归属地查询添加异常处理、绘制多角星、电影信息提取)

任务一:用户登录

登录系统通常分为普通用户与管理员权限,在用户登录系统时,可以根据自身权限进行选择登录。本任务要求实现一个用户登录的程序,该程序分为管理员用户与普通用户,其中管理员账号密码在程序中设定,普通用户的账号与密码通过注册功能添加。

分析

用户登录模块分为管理员登录和普通用户登录,在用户使用软件时,系统会先判断用户是否为首次使用:若是首次使用,则进行初始化,否则进入用户类型选择。用户类型分为管理员和普通用户两种,若选择管理员,则直接进行登录;若选择普通用户,先询问用户是否需要注册,若需要注册,先注册用户再进行登录。用户登录模块的具体流程如图所示。

用户登录流程图
用户登录模块包含文件
  1. 标识位文件flag.txt。
  2. 管理员账户文件u_root.txt。
  3. 普通用户账户文件。

标识位文件用于检测是否为初次使用系统,其中的初始数据为0,在首次启动系统后将其数据修改为1;管理员账户文件用于保存管理员的账户信息,该账户在程序中设置,管理员账户唯一;普通用户文件用于保存普通用户注册的账户,每个用户对应一个账户文件,普通用户账户被统一存储于普通用户文件夹users中。

实现用户登录模块

可以编写如下函数实现:

  1. is_first_start():判断是否首次使用系统;
  2. init():数据初始化;
  3. print_login_menu():打印登陆菜单;
  4. user_select():用户选择;
  5. root_login():管理员登陆;
  6. user_register():用户注册;
  7. user_login():普通用户登陆。

管理员登陆

用户注册、用户登陆

任务二:身份归属地查询添加异常处理

用户通过输入身份证前6位数字可以查询到身份证归属地,此只实现了归属地查询的功能,如果用户未按照指定的提示输入合法数据,程序不会给出任何提示。

分析

由于身份证归属地查询程序需要访问当前路径下的“身份证码值对照表.txt”文件,若在读取时没有在当前路径下找到该文件,则会引发FileNotFoundError异常,所以本实例直接使用try...except语句捕获并处理FileNotFoundError异常即可。

代码实现

以上代码对打开文件操作部分进行异常捕获与处理,并指定捕获的异常类型为FileNotFoundError。

代码测试

运行程序,文件存在的结果如下:

运行程序,文件不存在的结果如下:

任务三 绘制多角星

本实例要求编写程序,使用turtle模块绘制一个如图所示的多角星。

多角星示例

分析

本实例的多角星需要借用turtle模块,大家可自行从官方文档中(https://docs.python.org/3.7/library/turtle.html#turtle.pos)了解turtle模块的基本用法,了解之后便可以使用turtle模块中的相关函数进行绘制。

绘制多角星的功能可以视为将画笔沿逆时针方向旋转固定角度画直线(黑色)的操作,直到当前位置的绝对值小于1时就结束绘图,之后在画好的图形上填充颜色(红色)即可。此多角星绘制的过程中涉及到的turtle模块中的函数及说明如下:

  1. color():设置画笔颜色和填充颜色。
  2. begin_fill():开始填充。
  3. end_fill():停止填充。
  4. forward():将画笔向前方移动指定的距离。
  5. left():将画笔逆时针旋转指定的角度。
  6. pos():获取画笔当前的位置。
  7. done():启动事件循环,必须位于末尾位置。

代码测试

运行程序,绘制过程如图所示。

任务四 电影信息提取

在“电影.txt”文件中,包含电影排名、电影名称、评分、类别、演员等信息。虽然该文件中数据杂乱,不能很清晰地了解全部数据信息,但是每种数据都有相对应的标签,例如title标签对应着电影名称、rating标签对应着电影评分、rank标签对应着电影排名。为了能够提取指定的数据信息,可以使用正则表达式。如图所示为“电影.txt”文件中数据。

电影.txt

本实例要求编写程序,实现提取排名前20的电影名称与评分信息的功能。

分析

在使用正则表达式匹配之前,我们需要先读取“电影.txt”文件中的数据,将读取的数据作为正则表达式待匹配的目标文本对象。由于实例要求提取排名前20的电影名称及评分,所以需要编写符合要求的正则表达式,具体如下:

  1. 电影名称对应的正则表达式为title":"(.*?)。
  2. 电影评分对应的正则表达式为rating":\["(.*?)","\d+"\]。
  3. 电影排名对应的正则表达式为rank":(\d+)。

代码测试

运行代码,控制台输出结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04_拖动文件渲染在页面中

新建一个文件夹,跟之前一样,在 Vscode 终端里输入 yarn create electron-app Drag。 在 index.html 添加以下代码,JS 文件夹和 render.js 都是新创建的: 首先,css 文件一般和 html 结合使用,相当于 html 是…

Linux字符设备驱动开发一

linux字符设备驱动 0 驱动介绍1 字符设备驱动1.1 字符设备相关概念和结构体1.2 实现简单的字符设备模块1.3 创建字符设备1.4 总结 应用程序调用文件系统的API(open、close、read、write) -> 文件系统根据访问的设备类型,调用对应设备的驱动API -> 驱动对硬件进…

RedisCluster集群中的插槽为什么是16384个?

RedisCluster集群中的插槽为什么是16384个? CRC16的算法原理。 1.根据CRC16的标准选择初值CRCIn的值2.将数据的第一个字节与CRCIn高8位异或3.判断最高位,若该位为0左移一位,若为1左移一位再与多项式Hex码异或4.重复3至9位全部移位计算结束5…

基于SpringCache实现数据缓存

SpringCache SpringCache是一个框架实现了基本注解的缓存功能,只需要简单的添加一个EnableCaching 注解就能实现缓存功能 SpringCache框架只是提供了一层抽象,底层可以切换CacheManager接口的不同实现类即使用不同的缓存技术,默认的实现是ConcurrentMapCacheManagerConcurren…

20240313寻找集成联调交付的具体方式

集成联调交付(Integrated Joint Debugging and Delivery)是软件开发过程中的一个阶段,主要涉及将不同的软件模块或组件整合在一起,并进行联合调试和测试,以确保它们能够作为一个整体正常工作。这个过程通常发生在开发周…

云仓酒庄北京朝阳区旗舰店发布活动盛况:红酒品鉴沙龙共筑美好

原标题:云仓酒庄北京朝阳区旗舰店活动盛况:红酒品鉴沙龙与招商交流共筑美好未来 在繁忙的都市中,有一片静谧的天地,那便是云仓酒庄北京朝阳区旗舰店。这里不仅是红酒爱好者的聚集地,更是商业交流的新平台。近日&#…

C编程基础四十分笔记

都是一些基础的C语言 一 输入一个整数,计算这个整数有几位二 编写程序计算一个分布函数三 输入一个字符串,再随便输入一个字母,判断这个字母出现几次四 求 1到10的阶乘之和五 求一个球体体积六 写一个链表,存1,2&#…

BUGKU-WEB never_give_up

题目描述 题目截图如下: 进入场景看看: 解题思路 F12查看请求和响应,查找线索 相关工具 base64解码URL解码Burp Suit抓包 解题步骤 F12查看请求和响应,发现一行注释包含一个文件名称【1p.html】,这应该就是提…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解

学习视频:Faster-RCNN理论合集 概念辨析 在目标检测中,proposals和anchors都是用于生成候选区域的概念,但它们在实现上有些许不同。 Anchors(锚框): 锚框是在图像中预定义的一组框,它们通常以…

Linux环境(Ubuntu)上搭建MQTT服务器(EMQX )

目录 概述 1 认识EMQX 1.1 EMQX 简介 1.2 EMQX 版本类型 2 Ubuntu搭建EMQX 平台 2.1 下载和安装 2.1.1 下载 2.1.2 安装 2.2 查看运行端口 3 运行Dashboard 管理控制台 3.1 查看Ubuntu上的防火墙 3.2 运行Dashboard 管理控制台 概述 本文主要介绍EMQX 的一些内容&a…

【零基础学习05】嵌入式linux驱动中platform与设备树基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天主要学习一下,基于总线、设备和驱动进行匹配的平台驱动模型,这次将采用设备树的platform设备与驱动的编写方法,目前绝大多数的Linux内核已经支持设备树,这次主要来…

西井科技参与IATA全球货运大会 以AI绿动能引领智慧空港新未来

3月12日至14日,由国际航空运输协会IATA主办的全球货运大会(World Cargo Symposium)在中国香港成功举办,这是全球航空货运领域最大规模与影响力的年度盛会。作为大物流领域全球领先的“智能化与新能源化”综合解决方案提供商&#…

05-ESP32-S3-IDF USART

ESP32-S3 IDF USART详解 USART简介 USART是一种串行通信协议,广泛应用于微控制器和计算机之间的通信。USART支持异步和同步模式,因此它可以在没有时钟信号的情况下(异步模式)或有时钟信号的情况下(同步模式&#xff…

【STL】string各种函数的应用

1.string 基本赋值操作 string assign(string str,int n) string assign(string str,int pos,int n) 2.string存取字符操作 (at()) 注意:[ ]越界不会抛出异常,at越界会抛出异常 3.string拼接…

bpmn-js系列之Palette

前边写了四篇文章介绍了bpmn.js的基本使用,最近陆续有小伙伴加我催更,感谢对我这个半吊子前端的信任,接着更新bpmn.js的一些高级用法,本篇介绍对左侧工具栏Palette的隐藏和自定义修改 隐藏shape 左侧工具栏Palette有些图标我用不…

如何利用ChatGPT联系英语口语和听写!分享一些Prompt!

参考文章 ChatGPT4升级方法 namecheap购买方法 sora namecheap 支付 首先先看ChatGPT修改英语作文的能力 足以证明ChatGPT的能力 ChatGPT英语练习 口语: 实时交谈纠错发音纠错语句 写作: 写作建议构思文本 模拟考试: 雅思、托福和…

在域控的Users目录下批量创建用户组,名称来自Excel

对于CSV文件,PowerShell可以直接读取并处理,无需额外安装模块。假设你的CSV文件中,用户组名称在第一列,文件名为"groups.csv",可以使用以下PowerShell脚本来批量创建: # 读取CSV文件中的数据 $g…

西门子PLCS7-1200位逻辑指令的使用

1.LAD触点 常开触点的位值为1时,常开触点将闭合(ON)。位值为0时,常开触点将闭合(OFF)。 常闭触点的位值为1时,常闭触点将闭合(OFF)。位值为0时,常闭触点将闭…

2024.3.13 C++

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace…

HttpContext请求接收上下文模块设计与实现(http模块四)

目录 类功能 类定义 类实现 编译测试 类功能 类定义 // HttpContext接收请求上下文模块功能设计 typedef enum {RECV_HTTP_ERROR,RECV_HTTP_LINE,RECV_HTTP_HEAD,RECV_HTTP_BODY,RECV_HTTP_OVER } HttpRecvStatu;class HttpContext { private:int _resp_statu; …