- 博客(32)
- 收藏
- 关注
原创 Python 自定义迭代器 --以斐波那契数列为例
本文介绍了一个自定义斐波那契数列迭代器FibIterator。该迭代器通过实现__iter__和__next__方法,按需生成不超过max_num的斐波那契数。核心逻辑使用a、b两个变量动态更新数列,避免递归或列表存储。当数值超过max_num时抛出StopIteration终止迭代。示例显示max_num=10时输出0112358。这种实现方式符合Python迭代器协议,适用于需惰性求值和节省内存的场景。
2025-11-13 14:23:10
193
原创 Python XGBoost 算法简介与房价预测应用
XGBoost是一种高效的集成学习算法,通过组合多个决策树逐步修正预测误差来提升模型精度。本文以房价预测为例,展示了XGBoost回归模型的应用流程:首先加载30条房屋特征数据,划分为训练集和测试集;然后构建XGBoost模型(100棵决策树,最大深度5层)进行训练;在测试集上评估得到RMSE约20万元的预测误差;最后保存模型并演示新数据预测功能。整个过程包括数据准备、模型训练、评估和预测部署,适用于结构化数据的回归任务。
2025-11-12 14:46:56
582
原创 Python 自定义容器类
摘要:SmartRefrigerator是一个模拟智能冰箱的Python自定义容器类,使用字典存储食物(键)及其数量(值)。通过实现特殊方法(如__getitem__、__setitem__等)来模拟冰箱的基本操作:查看/添加/丢弃食物、检查库存、合并冰箱等。类还提供添加(add)、消耗(use)等便捷方法。示例演示了从初始化、日常使用到合并冰箱的全流程,展示了如何像操作真实冰箱一样自然地管理食物库存,体现了Python特殊方法在创建直观容器类中的应用价值。(150字)
2025-11-11 14:08:29
203
原创 Python 自定义容器类
摘要:自定义People类封装了人员管理功能,相比普通列表具有显著优势。该类支持添加、查找、过滤人员,自动处理姓名重复检查(可配置),并提供平均年龄计算、JSON序列化等便捷方法。通过重载__iter__、__len__等魔术方法,实现类列表操作。核心优势包括:1)集中业务规则,避免代码重复;2)修改维护成本低;3)接口清晰易用;4)便于单元测试。示例展示了不允许重名时的人员添加、查找成年人等典型用法,并演示了异常处理和JSON输出功能。
2025-11-10 14:20:50
221
原创 让 EMA 的平滑系数(通常记为 α )动态调整
本文提出一种基于指数移动平均(EMA)的自适应滤波方法,通过动态调整平滑系数α来优化滤波效果。该方法使用Sigmoid函数实现α在预设范围内的平滑变化,其中α随信号变化率自适应调整。实验对比了固定α(0.05和0.3)和自适应α的滤波效果,结果显示自适应EMA在保留信号特征的同时能更好地抑制噪声,其RMSE指标(0.34)优于固定α方案(0.37和0.43)。Python实现包含在线噪声估计和参数自适应机制,可根据信号特性调整α_min、α_max和Sigmoid斜率参数。
2025-11-07 16:06:52
318
原创 EMA 滤波(指数移动平均滤波)
EMA滤波是一种高效的时域平滑方法,通过指数加权平均实现信号去噪。它仅需保存上一时刻结果,计算简单且资源占用小。通过调节平滑系数α可平衡响应速度与平滑效果,适用于平稳变化的信号处理。其核心思想与状态空间模型和卡尔曼滤波类似,基于误差动态修正实现新旧数据融合。Python实现展示了不同α值对正弦波加噪信号的滤波效果对比,验证了EMA在噪声抑制与信号保留间的权衡能力。该方法在嵌入式系统、实时控制和信号处理中具有广泛应用价值。
2025-11-07 11:27:29
360
原创 Python 状态机
transitions是一个轻量级Python状态机库,支持层次化状态机和条件转换。示例展示了如何使用枚举定义物质状态(固态、液态、气态、等离子态),并通过状态机管理状态转换。库特性包括:1) 支持状态转换回调函数;2) 提供条件性转换(Guards);3) 可与FastAPI等框架集成。示例演示了状态触发(next/sublimate)、状态检查(is_xxx)以及转换回调(on_enter/on_exit)。安装方式为pip install transitions,适合需要管理复杂状态转换的应用场景。
2025-11-06 17:07:47
142
原创 Python 适配器模式(Adapter)
摘要:适配器模式通过包装不兼容接口使类能协同工作。其核心组件包括目标接口(客户期望的规范)、适配者(需适配的旧接口类)和适配器(实现目标接口并包装适配者)。示例展示了新支付接口与旧现金支付系统的适配过程:适配器在不修改旧代码的情况下,将新接口的金额参数整合到旧支付结果中,实现系统兼容。这种方式既保持了旧系统功能,又满足了新系统对金额记录的需求,体现了适配器在不破坏原有结构的前提下实现接口转换的优势。
2025-10-30 10:38:13
221
原创 Python 枚举
本文展示了使用枚举和工厂模式创建动物实例的Python实现。通过AnimalType枚举严格限定动物类型,配合Animal抽象基类定义接口,Dog和Cat类实现具体逻辑。AnimalFactory工厂类根据枚举值创建对应实例,避免了硬编码和类型错误。代码结构清晰,结合类型提示和异常处理,体现了良好的设计模式和代码规范。输出示例验证了狗"Woof!"和猫"Meow!"的正确叫声。
2025-10-30 09:35:08
264
原创 Python 简单模拟披萨生产流程
本文介绍了一个三工位披萨流水线模拟系统。系统包含三个固定工位:铺面团、涂酱料和加配料,采用输入队列管理订单。程序模拟了5个订单的生产过程,展示订单如何从队列进入工位1,逐步流转至工位3完成。通过周期性推进机制,每个工位同步工作,当前工位完成后将披萨移交下一工位,同时从队列加载新订单。系统能清晰展示流水线作业中的订单排队、工位占用和产品流转过程,最终输出所有完成订单。该模型有效模拟了制造业流水线的基本原理和工作流程。
2025-10-28 10:33:37
162
原创 使用 FastAPI 作为后端,接收同一网段的请求,并创建一个简单的前端页面进行交互
这是一个基于FastAPI后端和HTML前端的简易计算器应用。主要功能包括:1)提供两个数字输入框,支持整数和小数;2)支持加减乘除四种基本运算;3)通过按钮或回车键触发计算;4)显示完整计算表达式和结果;5)包含错误处理机制。使用说明:安装FastAPI和Uvicorn后,启动后端服务并配置前端API_URL为后端IP地址,即可在同一局域网内访问计算器。后端采用FastAPI框架处理计算请求,前端使用Tailwind CSS实现响应式界面。
2025-09-25 09:45:34
193
原创 差分 vs 差商:两个不同的概念
摘要:差分与差商是数值分析中的核心概念。差分描述函数值的绝对变化量(Δₕf(x)=f(x+h)-f(x)),而差商(Δₕf(x)/h)作为平均变化率用于近似导数。当h→0时,差商趋于导数。二阶差分可递归定义为Δ²f(x)=f(x+2)-2f(x+1)+f(x),通过x²的实例验证了其正确性。需注意差分与差商在概念和量纲上的区别:差分保持原函数量纲,差商则与导数量纲一致。在离散数学中,差分是构建差分方程的基础算子。
2025-09-24 11:19:03
919
原创 C# 点击一个按钮依次执行其他四个按钮对应动作
简单直观:无需修改原有功能代码,只需在新按钮中按顺序调用已有方法保持独立性:各个动作仍然可以通过各自的按钮独立触发易于维护:当某个动作需要修改时,只需修改对应的事件处理方法灵活性高:可以根据需求灵活调整执行顺序或增减执行步骤适合动作 1-4 执行时间较短的情况适合需要严格按照顺序执行的业务流程适合临时需要批量执行已有功能的场景如果动作包含耗时操作,可能会导致界面卡顿,此时应考虑使用异步方法如果事件处理方法依赖 sender 或 e 参数,需要传递合适的参数而非 null。
2025-09-19 11:08:19
324
原创 C# 将共用事件处理方法应用于加减乘除运算的示例
下面是一个将共用事件处理方法应用于加减乘除运算的示例。这个示例创建了四个按钮(加、减、乘、除)和一个共用的事件处理方法,通过判断点击的是哪个按钮来执行相应的运算。
2025-09-19 10:28:29
175
原创 C# WinForms 跨线程安全更新 UI 简单示例
(UI 线程)中执行,会导致 UI 线程阻塞 —— 窗体无法拖动、按钮无响应、界面卡顿。因此需要创建非 UI 线程执行耗时操作,再通过安全方式更新 UI。:只有创建 UI 控件的线程(通常是主线程,即 UI 线程)才能操作控件。若在非 UI 线程直接修改。是耗时操作(模拟 5 秒任务),若直接在。WinForm 遵循。(跨线程操作无效)。
2025-09-16 21:34:05
462
原创 C# ToString() 方法
文章摘要:C#和Python都提供了将对象转换为字符串的方法。C#通过重写object类的ToString()方法返回自定义字符串表示,Python则使用__str__()魔法方法实现类似功能。两种语言都会在打印对象时自动调用这些方法,开发者可重写它们以输出更有意义的对象信息。示例展示了在两个语言中如何为Person类实现字符串转换,并演示了显式和隐式调用方式。
2025-09-10 13:57:50
216
原创 C# 异常捕获
本文展示了如何为Student类的年龄字段添加验证逻辑以提高程序健壮性。通过在Age属性的set访问器中添加验证条件,当年龄为负数或超过150岁时会抛出ArgumentException异常。类中还包含其他验证逻辑,如分数范围验证(0-100),以及实用的方法如GetGrade()和IsPass()。主程序演示了正常和异常场景的处理,包括初始化时和运行时修改的验证。这种封装方式确保了数据有效性,同时提供了清晰的错误反馈。
2025-09-10 11:55:41
185
原创 c# 私有字段和公共成员入门
本文展示了一个C#实现的Person类,完成个人信息封装与操作。类中包含私有字段(_Name、secret等)和公共属性(Name、Age),通过get/set方法实现安全访问。核心功能包括:构造函数初始化信息、SayHello()方法问候并记录登录次数、VerifySecret()验证隐私信息。示例程序演示了创建对象、修改姓名、验证秘密等功能,体现了面向对象的封装特性。
2025-09-10 10:56:59
178
原创 C# 句柄(Handle)入门
摘要:本文介绍了句柄的概念及其在资源管理中的重要性,句柄是系统分配的唯一编号,用于代表文件、设备等资源,避免直接操作底层资源。通过一个C#实现的图书馆借阅系统示例,演示了如何正确申请、使用和释放句柄,重点强调了资源泄漏的风险(如未释放句柄导致系统变慢或崩溃)。系统还增加了教学功能,检测用户是否归还上次借阅的书籍,确保资源管理的规范性。
2025-09-09 14:06:24
150
原创 C# 管理和安装辅助包
本文介绍了C#中通过NuGet管理辅助包的三种方法:1)使用Visual Studio图形界面安装;2)通过.NET CLI命令行安装;3)利用Package Manager Console安装。同时说明了如何通过Package Manager Console的Get-Package命令查看已安装包。文中以Newtonsoft.Json为例,演示了具体的安装命令,为C#开发者提供了便捷的包管理方案。
2025-08-21 11:48:02
369
原创 C# 入门学习 (文件组织关系)
摘要:示例展示了一个C#多文件程序结构,包含Program.cs(主入口)、ArithmeticOperations.cs(算术运算)和Validation.cs(数据验证)。其中,ArithmeticOperations.cs定义在bb.Arithmetic命名空间下,包含基本运算类;Validation.cs包含Validation和CalculatorApp.Helpers两个命名空间;Program.cs通过using指令引用这些命名空间来调用功能。该示例演示了多文件项目的命名空间组织和使用方式。
2025-08-20 17:03:05
228
原创 Python 简单模仿组装、射击的动作
摘要 本文设计了一个包含子弹、弹匣、枪和人类的交互模型。模型包含四个类:Bullet(子弹,含伤害值属性)、Magazine(弹匣,管理子弹存储,有容量限制)、Gun(枪,可装载弹匣并发射子弹)和Person(人,能执行压子弹、装弹匣和射击操作)。交互逻辑包括:人可将子弹压入弹匣(受容量限制)、将弹匣装入枪(一次一个弹匣)、用枪射击目标(目标生命值减少)。测试场景展示了两个士兵从装弹到射击的全过程,包括生命值减少直至死亡的状态变化。该模型完整实现了武器系统的基本操作流程和伤害计算机制。
2025-08-20 09:47:17
254
原创 Python 根据参数类型执行不同的处理逻辑
摘要:实现了一个物品处理系统,包含Item类和ItemProcessor类。Item类存储物品名称和价值,ItemProcessor类通过process_items方法处理单个Item或Item列表。该方法使用类型检查区分处理逻辑:对单个物品显示详细信息,对列表计算总价值并逐项展示。示例演示了处理器如何处理单个苹果(5.99)和包含苹果、香蕉(3.99)、橙子(4.99)的列表,输出总价值14.97。系统采用Python类型注解确保参数类型安全。
2025-08-18 16:20:55
210
原创 Python getattr()、__getattr__ 简单结合实例
本文介绍了Python中两种处理对象属性的方法:内置函数getattr()和特殊方法__getattr__。getattr()用于获取对象的属性值,接受对象、属性名和可选默认值参数,若属性不存在且无默认值则抛出AttributeError。__getattr__则在访问不存在属性时被调用,允许自定义处理逻辑。通过示例展示了如何用getattr()获取实例属性和方法,以及如何用__getattr__实现代理模式。后者还能与__getitem__配合,支持字典式访问。两种机制为Python属性访问提供了灵活的控
2025-08-12 09:25:52
225
原创 Python 多态、泛型、协议 简单结合应用
这篇文章展示了一个使用Python类型注解和协议的动物叫声处理系统。代码定义了一个Animal基类和多个具体动物类(Dog、Cat、Bird),每个类实现make_sound方法返回特定叫声。通过AnimalType协议规范动物类型标识类必须提供animal_cls属性,并使用@runtime_checkable支持运行时检查。AnimalSound泛型类维护动物类型到实例的映射,通过结构子类型检查处理不同类型动物的叫声查询。系统可以灵活扩展新动物类型(如Fish),体现了Python类型系统的灵活性和协议
2025-08-11 14:11:52
418
原创 Python 类作为装饰器入门
文中通过TimeLogger装饰器类示例访问被装饰方法时,先触发__get__返回包装函数,调用时再执行__call__中的装饰逻辑。
2025-07-28 16:59:08
332
原创 modbus over RS485 (Python 实现)
本文介绍了USB转串口驱动(CH341SER.EXE)的安装方法及Modbus RTU数据采集的实现。首先需下载并安装驱动程序,连接设备后查看端口号。文中指出寄存器数值需根据数据类型和系数转换(如UINT16类型需乘以0.001)。随后提供了一个完整的Python代码示例,使用modbus_tk库实现温度数据采集(读取输入寄存器)和寄存器写入功能。代码包含串口初始化、数据采集循环、异常处理等模块,支持命令行参数配置端口、波特率等参数,并通过日志记录运行状态。该方案适用于工业自动化领域的Modbus设备数据采
2025-07-14 15:26:22
176
原创 python 异常捕获简单案例
这是一个内容发布器的Python类实现示例。ContentPublisher类包含内容验证和发布功能:初始化时内容验证状态为False;validate_content方法检查内容长度是否超过10字符;publish方法会先验证内容,未通过时抛出异常,通过则发布内容。示例演示了发布短内容(失败)和长内容(成功)两种情况。该实现展示了基本的验证流程和异常处理机制。
2025-06-06 11:40:21
196
原创 利用numpy解逆矩阵
本文介绍了使用NumPy库求解矩阵逆矩阵及其在线性方程组中的应用。首先通过计算行列式判断矩阵是否可逆,若可逆则用np.linalg.inv()求逆矩阵。示例展示了求解逆矩阵并验证其正确性。接着演示了如何利用np.linalg.solve()方法直接求解线性方程组AX=B,并进行结果验证。文中提供了完整的Python代码示例,包括矩阵可逆性判断、逆矩阵求解和验证,以及线性方程组的求解过程。这些方法为处理矩阵运算和线性方程组提供了简便的数值计算解决方案。
2025-06-05 14:00:02
114
原创 python 简单模拟组装操作
摘要:本文介绍了使用Python模拟房屋家具摆放的实现方法。通过定义两个类:HouseItem(家具类)和House(房子类),其中家具类包含名称和占地面积属性,房子类包含户型、总面积和剩余面积等属性。核心功能是通过add_item方法向房子添加家具,并自动计算剩余面积。代码示例创建了床、衣柜和餐桌三个家具对象,将它们添加到60平米;两室一厅中,最终输出房屋信息和剩余面积51.5平米。该实现展示了Python面向对象编程的基本应用。
2025-06-05 11:44:02
363
原创 YOLOV8 绘制追踪路径(基于ultralytics)
这是一个使用OpenCV(cv2)和YOLOv8在视频帧上运行物体追踪的Python脚本
2025-04-15 15:54:47
318
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅