项目5 升级实验室监控系统_第1页
项目5 升级实验室监控系统_第2页
项目5 升级实验室监控系统_第3页
项目5 升级实验室监控系统_第4页
项目5 升级实验室监控系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目5升级实验室监控系统主讲:吴雪飞知识回顾项目引入项目4设计了不同场地的温度和湿度的网页版数据监控器,随着工业检测参数的增加(如响度、明亮度等),不同数据类型的存储与统计逻辑也会呈现出显著的差异。若直接沿用原有代码结构,会导致大量重复性操作(如数据验证、异常标记、结果计算等),极大降低代码的可维护性。如何通过函数封装公共逻辑,实现多类型数据的统一处理,是提升系统扩展性与代码效率的关键问题。项目描述项目5将在项目4原有数据监控系统的基础上,通过函数化重构实现功能扩展功能扩展新增响度(声压值)和明亮度(光照强度)的监测与统计;函数封装定义通用函数处理公共逻辑(如数据范围校验、异常次数统计、结果格式化输出);通过函数参数传递数据类型差异(如温度单位为℃、响度压力单位为pa),实现逻辑复用;模块化调用针对不同数据类型调用统一函数接口,避免代码冗余。项目效果相关知识:函数定义函数(Function)是程序设计的核心单元之一,它是一段可重复调用的代码块,用于封装特定功能,通过接收输入(参数)、执行逻辑操作并返回结果。通过“def”关键字定义。包含函数名、函数参数、函数体和返回值。相关知识:函数名的命名规则命名规则描述字符限制只能使用字母(A-Z,a-z)、数字(0-9)和下划线(_),不能包含空格、特殊字符或中文。开头规则必须以字母或下划线开头,不能以数字开头。大小写敏感Python区分大小写,functionName和functionname被视为不同的函数名。禁止使用保留字不能使用Python的保留字和关键字,如def、if、for等。简洁描述函数名应简洁且能清晰描述函数的功能,避免模糊或冗长。命名风格推荐使用小写字母和下划线(snake_case)来命名函数,例如:calculate_sum。相关知识:函数调用函数的调用:函数定义完成以后,可以通过函数名加上括号来调用函数相关知识:参数传递位置参数按参数定义的顺序传递值,是最基础的传参方式关键字参数调用时通过参数名指定值,无需考虑顺序相关知识:参数传递默认参数参数可设置默认值,当函数调用没有传递参数时,会启用默认参数,可以有多个默认参数,但必须放在参数列表末尾相关知识:参数传递可变参数*args接收任意数量位置参数参数以元组形式存储,常用于处理不定长输入可变参数**kwargs接收任意数量关键字参数参数以字典形式存储,用于处理命名键值对元组解包中星号(*)是“解包”的功能,此处是“打包”功能相关知识:参数传递参数解包序列解包与*操作符参数解包字典解包与**操作符相关知识:参数传递参数传递机制Python的参数传递属于“按对象引用传递”(即“按共享传递”)不可变对象(如整数、字符串)在函数内修改时会创建新对象,不影响原变量。可变对象(如列表、字典)在函数内修改时会直接影响原对象。相关知识:返回值与作用域返回单个值函数通过return语句返回单个值,该值可以是任意数据类型。返回多个值函数可通过return返回多个值,以元组形式呈现。相关知识:返回值与作用域无返回值如果函数没有return语句,或者return后面不跟任何值,函数默认会返回None。相关知识:返回值与作用域变量作用域全局变量在整个模块可见,函数内部需用global显示声明。局部变量仅在定义它们的函数或代码块内有效。相关知识:高阶函数高阶函数是指那些满足以下任一条件的函数:能够接受其他函数作为输入参数或将函数作为返回值输出甚至能够操作或生成函数通过抽象函数行为,高阶函数将代码逻辑提升到更高层次的组合与复用,从而显著增强了代码的灵活性和表达力,成为提升编程效率和质量的重要工具。相关知识:高阶函数map函数用于对可迭代对象中的每个元素应用指定的函数,返回一个迭代器。语法格式map(function,iterable)iterable:一个或多个可迭代对象(如列表、元组等);functionfunction:要对每个元素执行的函数;返回值:一个map对象(迭代器)。相关知识:高阶函数filter函数用于从可迭代对象中筛选出满足条件的元素,返回一个迭代器。语法格式filter(function,iterable)functionfunction:判断函数,返回True或False;用于筛选元素(若为None,则直接过滤掉假值);iterable:可迭代对象(如列表、元组等);返回值:一个filter对象(迭代器),包含所有使function返回True的元素。相关知识:高阶函数reduce函数用于对可迭代对象中的元素进行累积计算(需从functools模块导入)。语法格式fromfunctoolsimportreducereduce(function,iterable[,initial])function:用于接收两个参数的累积函数(如lambdax,y:x+y);iterable:可迭代对象(如列表、元组等);initial(可选):初始值,若提供则作为第一次计算的第一个参数;返回值:最终的累积结果。相关知识:高阶函数应用场景map——“变”你有一筐东西,你想把筐里的每一个东西都一对一地变成另一种形态。输入和输出元素的个数不变。filter——“筛”你有一筐东西,你想根据某种条件筛选出你想要的那些。输出元素的个数可能减少,但元素本身不变。reduce——“合”你有一筐东西,你想把它们聚合成一个单一的总结结果。比如求和、求积、拼接成一个字符串等。相关知识:递归函数递归(Recursion)函数是指一个自己会调用自己的函数。就像俄罗斯套娃打开一个娃娃,里面还有一个更小的同类娃娃,直到遇到最小的那个为止。递归函数必须包含两个关键要素基准条件(BaseCase)必须有明确的终止条件,比如最小的套娃;递归步骤(RecursiveStep)每次调用都要让问题变得更小。相关知识:递归函数相关知识:递归函数应用场景处理树状结构比如文件夹遍历;解决分步骤的问题比如汉诺塔;当问题可以分解成相同的小问题时但需要注意的是忘记终止条件会导致无限循环;递归层数太深可能让程序崩溃;有些问题用循环解决效率更高。示例5.1输出小于m的最大孪生素数对任务描述编写函数is_prime(n),判断一个数n是否为素数,函数参数为n从键盘输入m,调用函数寻找比m小的最大孪生素数对,并打印该素数对。所谓孪生素数即相差为2的一对素数。示例5.1输出小于m的最大孪生素数对思路分析判断素数(is_prime(n))如果n<=1,直接返回False。遍历2到sqrt(n)(包含),检查是否能整除n。如果发现任何能整除的数,n不是素数,返回False。否则,n是素数,返回True。思路分析寻找比m小的最大孪生素数对孪生素数定义:两个素数(p,p+2),例如(3,5)、(5,7)从m-1开始向下遍历,检查每个数i和i-2是否都是素数。找到的第一个满足条件的(i-2,i)就是最大的孪生素数对。如果遍历到i=5仍未找到,说明不存在比m小的孪生素数对。示例5.1输出小于m的最大孪生素数对试一试:能否把寻找小于m的最大孪生素数对的功能也写成一个函数?任务描述:某工厂视觉检测系统采集到一批产品表面瑕疵数据,需通过编程实现以下功能:数据预处理函数(preprocess_data(raw_data))输入:原始检测数据(列表,元素为字典,格式如[{"id":1,"defects":3},...])处理:过滤掉defects字段缺失或为负数的无效数据输出:返回有效数据列表(valid_data)缺陷等级判断函数(judge_defect_level(defect_num))输入:单个产品的缺陷数量(整数)规则:0个缺陷

→"合格"1~2个缺陷

→"轻微瑕疵">=3个缺陷

→"严重缺陷"输出:返回等级字符串试一试5.1工业视觉缺陷数据检测分析器统计报告生成函数(generate_report(valid_data))输入:有效数据列表处理:统计总检测数量、合格品数量、严重缺陷占比(百分比)输出:返回字典,格式如{"total":10,"passed":6,"serious_rate":"30.0%"}主函数整合(main())调用上述三个函数完成完整处理流程输出最终统计报告试一试5.1工业视觉缺陷数据检测分析器相关知识:库的使用标准库如os、sys、datetime、json随Python安装自带,提供基础功能支持第三方库如numpy、pandas、requests、Django等需额外安装,扩展了科学计算、数据分析、Web开发等高级能力项目拆解效果展示实现要求在“Python-code”文件夹中复制“项目5_原始素材”文件夹,并粘贴至同一目录下,重命名为“项目5”打开“项目5”文件夹,在“unit5.py”文件中实现以下要求定义4个函数分别处理4种类型信息,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论