当前位置: 首页 > news >正文

2023年最新Python大数据之Python基础【七】管理系统

文章目录

    • 7、学生管理系统
    • 8、函数递归
    • 9、lambda函数
    • 后记

7、学生管理系统

# 需求拆分:
'''
1.展示学生管理系统的功能有哪些,引导用户键入序号选择功能
2.获取用户键入的功能
3.分析具体要执行哪一项功能
4.执行功能
'''def print_all_option():"""用户功能界面展示"""print('-' * 20)print('欢迎登录学员管理系统')print('1: 添加学员信息')print('2: 删除学员信息')print('3: 修改学员信息')print('4: 查询学员信息')print('5: 遍历输出所有学员信息')print('6: 退出系统')print('-' * 20)def choose_option(num):"""分析要执行哪一项功能"""if num == '1':# 添加学员函数add_student_info()elif num == '2':# 删除学员函数delete_student_info()elif num == '3':# 修改学员函数modify_student_info()elif num == '4':# 查询学员函数search_student_info()elif num == '5':# 展示所有学员函数show_students_info()elif num == '6':# 退出程序函数exit_program()else:print('无此选项,请重新输入')def add_student_info():"""添加学员信息"""# 1.用户输入学员信息# 1.1当用户输入的id值已经存在时,则不让其继续输入,警告,该id已经存在stu_id = input('请输入要添加学员的id:')# 获取students_list中所有学员的id值(推导式)students_id = [i['id'] for i in students_list]# 1.2 比对id是否存在,存在则不允许运行if stu_id in students_id:print('该id值已经存在,无法添加学员')else:name = input('请输入要添加学员的姓名:')age = input('请输入要添加学员的年龄:')mobile = input('请输入要添加学员的手机号:')# 2.将学员信息添加到students_list当中students_list.append({'id': stu_id, 'name': name, 'age': int(age), 'mobile': mobile})print('学员添加完成')def delete_student_info():"""删除学员信息"""# 1.获取要删除学员的id值stu_id = input('请输入要删除学员的id:')# 2.判断该学员是否存在,如果存在则删除该学员,如果不存在,则提示该学员不存在for stu_info in students_list:# 判断是否是要删除的学员if stu_info['id'] == stu_id:# 删除学员并跳出函数students_list.remove(stu_info)print('该学员已删除')returnelse:# 执行该命令警告用户没有该学员print('该学员不存在,无法删除')def modify_student_info():"""修改学员信息"""# 1.输入要修改的学员的id值stu_id = input('请输入您要修改学员的id:')# 2.如果学员存在就修改学员信息,如果不存在则进行提示,学员不存在for stu_info in students_list:if stu_info['id'] == stu_id:# 学员信息修改name = input('请输入您要修改为的名字:')age = input('请输入您要修改为的年龄')mobile = input('请输入您要修改为的手机号:')stu_info['name'] = namestu_info['age'] = agestu_info['mobile'] = mobileprint('学员信息修改完成')returnelse:print('该学员不存在,修改失败')def search_student_info():"""查询学员信息"""# 1.输入要查询学员的id值stu_id = input('请输入要查询学员的id:')# 2.判断id值是否存在,如果存在则展示,如果不存在,则警告学员不存在for stu_info in students_list:if stu_info['id'] == stu_id:print(f'学员的学号是:{stu_info["id"]}, 学员的姓名是:{stu_info["name"]}, 学员的年龄是:{stu_info["age"]}, 学员的手机号是:{stu_info["mobile"]}')returnelse:print('该学员不存在,查询失败')def show_students_info():"""展示所有学员信息"""for stu_info in students_list:print(f'学员的学号是:{stu_info["id"]}, 学员的姓名是:{stu_info["name"]}, 学员的年龄是:{stu_info["age"]}, 学员的手机号是:{stu_info["mobile"]}')# def exit_program():
#     # import sys
#     # # 退出当前程序,结束进程
#     # sys.exit()
#     exit()def exit_program():"""结束程序"""# 通过控制变量结束死循环global is_stop# 在修改之前需要进行声明 ,修改的变量为全局变量is_stop = True# # 展示功能界面
# print_all_option()
#
# # 引导用户输入功能序号,并获取序号
# option = input('请输入您要执行功能的序号:')
#
# # 根据获取的序号分析要执行哪些功能
# chose_option(option)# 思考:学生管理系统,是不是需要输入6  才能退出 不然就一直询问您要输入的选项
# 这中情况下建议使用 while True 构造死循环students_list = [{'id': '001', 'name': 'xiaoming', 'age': 18, 'mobile': '13833838338'},{'id': '002', 'name': 'xiaohong', 'age': 18, 'mobile': '13900000000'}
]
is_stop = Falsewhile not is_stop:# 展示功能界面print_all_option()# 引导用户输入功能序号,并获取序号option = input('请输入您要执行功能的序号:')# 根据获取的序号分析要执行哪些功能choose_option(option)# 方便展示,显示所有学员信息,开发完成后删除# print(students_list)input()# 死循环的退出方式有哪些?
# break
# return
# exit()
# 控制变量
...

8、函数递归

  • 函数内部调用函数本身
  • 函数有明确的递归跳出条件
  • 不超出最大调用深度
# 函数递归的三个必备条件
'''
1/函数体内部,调用函数本身
2/递归够明确的跳出条件
3/不能超出最大调用深度
'''# 需求:
'''
func(1) = 1
func(2) = 1 + 2 = func(1) + 2
func(3) = 1 + 2 + 3 = func(2) + 3
func(4) = 1 + 2 + 3 + 4 = func(3) + 4
.....
func(n) = 1 + 2 + 3 .... + n = func(n-1) + n
'''# RecursionError: maximum recursion depth exceeded
# 这种方式无法跳出递归,所以在使用的时候就会无限递归下去
# def func(n):
#     return func(n-1) + n'''
func(1) = 1
func(2) = func(1) + 2
func(3) = func(2) + 3
func(4) = func(3) + 4
.....
func(n) = func(n-1) + n
'''def func(n):if n == 1:return 1return func(n-1) + nprint(func(999))# Python中默认的最大调用深度,是1000 也就是在Python中函数最多嵌套1000层
# 最大调用深度是为了保证系统性能的,否则无限递归下去,一会内存就满了
# 最大调用深度可以调整,可以调整到非常大的数字只要系统性能跟得上
# RecursionError: maximum recursion depth exceeded in comparison# 注意事项:
# 在编程初期,尽量少使用递归,但是要理解递归的特性,别人写的递归函数也要能看懂

9、lambda函数

  • 匿名函数,在函数定义时没有函数名
  • 可以用变量保存,在变量之后添加括号即可调用
# lambda表达式,也叫匿名函数
# 格式: lambda 参数: 返回值# 需求: 根据传入的参数返回最大值  使用lambda函数书写
# 三目运算  :  条件成立时返回的代码 if 条件 else 条件不成立时返回的代码
max_num = lambda a, b: a if a > b else b
# 使用变量可以储存lambda函数
print(max_num(1, 2))
print(max_num(9, 2))print(type(max_num))  # <class 'function'>def func():print('abc')print(type(func))  # <class 'function'>
# 通过对数据类型的查看,我们发现lambda和普通函数本质上是一样的,只不过在使用时构造更为简单# 在使用lambda函数时可以不用变量接收
print((lambda a, b: a if a > b else b)(3, 4))  # 4
# 但是不适用变量接收,lambda函数只能使用一次,使用后集被释放,无法再次使用# lambda缺点: 没有办法书写负责的函数,因为其没有函数体,只有返回值,所以返回值后边只能书写一个表达式,lambda可读性极差# 使用lambda完成递归(了解,一般不建议写复杂的代码)
func1 = lambda n: func1(n - 1) + n if n != 1 else 1
# RecursionError: maximum recursion depth exceeded
# 超出最大调用深度,没有明确的递归跳出条件
print(func1(100))# lambda应用场景
# 可以用于一次性函数使用
# 可以作为函数的参数进行传递# list  sort(key= )
# lsit sort排序方法中的key所需要的参数就是一个函数,我们可以传入lambda表示list1 = [{'a': 1}, {'b': 12}, {'c': 10}]
# 排序规则:根据字典的第一个键所对应的值进行排序list1.sort(key=lambda x:list(x.values())[0])
# 格式: 列表.sort(key = lambda 每次传入的元素: 排序所依据的规则)
print(list1)

后记

📢博客主页:https://manor.blog.csdn.net

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_11947788.html

相关文章:

2023年最新Python大数据之Python基础【七】管理系统

文章目录 7、学生管理系统8、函数递归9、lambda函数后记 7、学生管理系统 # 需求拆分:1.展示学生管理系统的功能有哪些,引导用户键入序号选择功能 2.获取用户键入的功能 3.分析具体要执行哪一项功能 4.执行功能 def print_all_option():"""用户功能界面展示&qu…...

【网安】网络安全防止个人信息泄露

网络安全防止个人信息泄露 1、尝试检查自己的网络隐私数据是否泄漏过&#xff0c;可以使用下面的网站2、使用安全非盈利组织的浏览器3、安装浏览器插件&#xff0c;防止网络跟踪4、保持安全的访问方式 1、尝试检查自己的网络隐私数据是否泄漏过&#xff0c;可以使用下面的网站 …...

ChatGPT,AIGC 数据库应用 Mysql 常见优化30例

使用ChatGPT,AIGC总结出Mysql的常见优化30例。 1. 建立合适的索引:在Mysql中,索引是重要的优化手段,可以提高查询效率。确保表的索引充分利用,可以减少查询所需的时间。如:create index idx_name on table_name(column_name); 2. 避免使用select * :尽可能指定要返回的…...

并查集路径压缩

并查集里的 find 函数里可以进行路径压缩&#xff0c;是为了更快速的查找一个点的根节点。对于一个集合树来说&#xff0c;它的根节点下面可以依附着许多的节点&#xff0c;因此&#xff0c;我们可以尝试在 find 的过程中&#xff0c;从底向上&#xff0c;如果此时访问的节点不…...

spring和springMVC的说明

Spring和Spring MVC都是Java应用程序开发中常用的框架&#xff0c;它们提供了一种结构化的方法来构建企业级Java应用程序。下面我将对它们进行详细的说明&#xff1a; Spring&#xff1a; 概述&#xff1a; Spring是一个综合的Java应用程序开发框架&#xff0c;旨在简化企业级…...

软件工程与计算总结(十)软件体系结构设计与构建

目录 ​编辑 一.体系结构设计过程 1.分析关键需求和项目约束 2.选择体系结构风格 3.体系结构逻辑设计 4.体系结构实现 5.完善体系结构设计 6.定义构件接口 二.体系结构原型构建 1.包的创建 2.重要文件的创建 3.定义构件之间的接口 4.关键需求的实现 三.体系结构的…...

【实操】基于ChatGPT构建知识库

前言 最近有些实践&#xff0c;因为后面要去研究fine-tune了&#xff0c;想着记录一下chatgpt向量数据库构建知识库的一些实操经验&#xff0c;不记我很快就忘了&#xff0c;哈哈。 首先&#xff0c;提一下为啥会出现向量数据库这个技术方案&#xff1f; 大家经过实践发现&…...

ribbonx编程笔记-读写注册表与使用自定义对话框

​ Windows 注册表是一个数据库,用于存储与计算机不同方面相关的设置,例如用户设置、应用程序设备、硬件设置,等等。 VBA 提供了与注册表直接交互的方式,这不仅允许我们获取其它程序和硬件的信息,而且也能够使我们选择应用程序中的重要信息并将其存储在注册表中。本文中,…...

网工记背配置命令(3)----POE配置示例

POE 供电就是通过以太网供电&#xff0c;这种方式仅凭借那根连接通信终端的网线就可完成为它们供电。POE提供的是-53V~0v 的直流电&#xff0c;供电距离最长可达 100m。PoE 款型的交换机的软件大包天然支持 POE&#xff0c;无需 license&#xff0c;通过执行 poe-enable 命令使…...

网络安全(黑客技术)—0基础学习手册

目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类…...

[部署网站]01安装宝塔面板搭建WordPress

宝塔面板安装WordPress&#xff08;超详细&#xff09;_Wordpress主题网 参考教程 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 官网 1.首先你需要一个服务器或者主机 &#xff08;Windows系统或者Linux系统都可以&#xff09; 推荐Linux系统更稳定&#xff0c;…...

Can We Edit Multimodal Large Language Models?

本文是LLM系列文章&#xff0c;针对《Can We Edit Multimodal Large Language Models?》的翻译。 我们可以编辑多模态大型语言模型吗? 摘要1 引言2 相关工作3 编辑多模态LLM4 实验5 结论 摘要 本文主要研究多模态大语言模型(Multimodal Large Language Models, mllm)的编辑…...

使用jsqlparser创建MySQL建表语句

语法 create table [IF NOT EXISTS] 表名 ( 字段名 类型 [约束条件], 字段名 类型 [约束条件], 字段名 类型 [约束条件], 字段名 类型 [约束条件] ); 字段定义在括号内约束条件可以有多个多个字段定义之间用都会隔开 常见约束 NOT NULL 非空DEFAULT 0 默认值AUTO_INCREMENT…...

字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)

字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C &#xff0c; CF1109B) CF 245 H. Queries for Number of Palindromes&#xff08;字符串 dp&#xff09; Problem - H - Codeforces 大意&#xff1a;给出一个字符串S (|S| ≤ 5000) , 给出 Q 次询问 &#xff0c; 每…...

Linux:Mac VMware Fusion13以及CentOS7安装包

Linux&#xff1a;Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址&#xff1a;https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…...

【微服务部署】十、使用Docker Compose搭建高可用Redis集群

现如今&#xff0c;业务系统对于缓存Redis的依赖似乎是必不可少的&#xff0c;我们可以在各种各样的系统中看到Redis的身影。考虑到系统运行的稳定性&#xff0c;Redis的应用和MySQL数据库一样需要做到高可用部署。 一、Redis 的多种高可用方案 常见的Redis的高可用方案有以下…...

【数据结构】树状数组C++详解

文章目录 引入树状数组定义什么是单点修改和区间查询工作原理区间查询代码实现单点修改实现代码242. 一个简单的整数问题AC代码如下:练习:AC代码如下:引入 242. 一个简单的整数问题 给定长度为 N的数列 A A A<...

机器人制作开源方案 | 扫地机器人

1. 功能描述 扫地机器人是现代家庭清洁的得力助手&#xff0c;能够自主规划清扫路径&#xff0c;避开障碍物&#xff0c;有效覆盖整个清洁区域。扫地机器人的出现极大地减轻了家庭清洁的负担&#xff0c;节省了时间和精力&#xff0c;它可以定期清理地面&#xff0c;确保家居环…...

10.2手动推导linux中file, cdev, inode之间的关系

是时候可以手动推导一下linux里面基类父类和子类的关系了 代码放最后把 简单说明版 详细流程 第一步注册驱动 cdev结构体能看做是一个基类,那么链表里面都是字符设备驱动的cdev连载一起,啥串口,lcd的,通过cdev->list_head连接 那cdev结构体里有主次设备号 第一步 使用r…...

JavaScript基础知识13——运算符:一元运算符,二元运算符

哈喽&#xff0c;大家好&#xff0c;我是雷工。 JavaScript的运算符可以根据所需表达式的个数&#xff0c;分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符&#xff1a;只需要一个表达式就可以运算的运算符。 示例&#xff1a;正负号 一元运算符有两…...

RTKLIB2.4.3进阶:在VS2017中通过.conf与命令行参数高效驱动PPP数据处理

1. RTKLIB与PPP数据处理基础 RTKLIB作为开源GNSS数据处理工具链&#xff0c;在精密单点定位&#xff08;PPP&#xff09;领域有着广泛应用。2.4.3版本虽然发布较早&#xff0c;但其稳定性和功能完整性使其至今仍是许多高精度定位项目的首选。我在多个测绘项目中实测发现&#x…...

手把手教你用OPA4377搭建一个精密电流检测电路(附AD原理图/PCB)

精密电流检测电路设计实战&#xff1a;基于OPA4377的完整解决方案 在工业自动化、新能源系统和医疗设备等领域&#xff0c;精密电流检测一直是电路设计中的关键挑战。传统方案往往面临噪声干扰、非线性失真和温度漂移等问题&#xff0c;而现代CMOS运算放大器如OPA4377为解决这些…...

VMware macOS虚拟机终极解锁指南:Unlocker 3.0完全解析与实战应用

VMware macOS虚拟机终极解锁指南&#xff1a;Unlocker 3.0完全解析与实战应用 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术日益普及的今天&#xff0c;许多开发者和技术爱好者希望在Win…...

WinForm弹窗进阶:手把手教你封装一个通用的MessageBoxHelper工具类(.NET Framework/C#)

WinForm弹窗进阶&#xff1a;打造高复用性的MessageBoxHelper工具类 在WinForm开发中&#xff0c;MessageBox.Show()就像空气一样无处不在——从简单的操作确认到复杂的错误处理&#xff0c;这个基础组件承担了太多交互职责。但当你第20次写下MessageBox.Show("操作成功&q…...

Perplexity×NEJM文献交叉验证协议(NIH资助项目内部文档首次公开:含4层可信度打分矩阵与人工校验SOP)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;PerplexityNEJM文献交叉验证协议的起源与战略意义 PerplexityNEJM文献交叉验证协议并非传统意义上的软件接口规范&#xff0c;而是一种面向临床研究可信度增强的元认知对齐框架。其诞生源于2023年大型语…...

FPGA硬件在环验证:GateRocket方案加速系统级调试

1. 项目概述&#xff1a;为什么FPGA验证需要“硬件在环”&#xff1f;在FPGA设计领域&#xff0c;尤其是当项目规模膨胀到数百万甚至上千万门级时&#xff0c;纯软件仿真&#xff08;Simulation&#xff09;会变成一个令人头疼的瓶颈。想象一下&#xff0c;你写了一段新的RTL代…...

【GD32】从零构建GD32开发环境(Keil 5)—— 固件库配置与工程创建实战

1. 为什么需要配置固件库&#xff1f; 刚接触GD32单片机的朋友可能会有疑问&#xff1a;为什么不能直接在Keil里写代码&#xff1f;这就好比装修房子&#xff0c;固件库就像是提前准备好的建材包&#xff0c;里面已经包含了墙面涂料、地板材料、门窗框架等标准件。如果每次开发…...

5分钟完全指南:roop-unleashed AI换脸神器从入门到精通

5分钟完全指南&#xff1a;roop-unleashed AI换脸神器从入门到精通 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要在几分钟内制作专业级的AI换脸视频吗…...

答辩 PPT 还在熬夜手搓?Paperxie AI 一键救场,毕业季不熬无用夜

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 当论文终稿尘埃落定&#xff0c;本以为能松一口气&#xff0c;却发现答辩 PPT 成了压垮心态的最后一根稻草。对着空白页面不…...

ERP生产模块设计:从BOM到完工

一、基础数据&#xff1a;BOM与工艺路线生产模块的核心是BOM&#xff08;物料清单&#xff09;和工艺路线。这两个搞不清楚&#xff0c;生产计划无从谈起。1. BOM表结构CREATE TABLE bd_bom (id BIGINT PRIMARY KEY AUTO_INCREMENT,bom_no VARCHAR(30) NOT NULL UNIQUE,materia…...