当前位置: 首页 > 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;正负号 一元运算符有两…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...