版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目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种类型信息,分别是温度temperature()、湿度humidity()、响度loudness()、明亮度lightness()。调用每个函数时,传入字典dict中对应的每天的数据。每个函数返回当天的信息。在main函数中取出相应类型的值,并传入各个函数中得到返回的结果。用列表result记录返回结果传入各个函数的参数实现要求-main函数实现要求-4个处理函数THANKYOU主讲:吴雪飞项目6存储实验室数据到云端主讲:吴雪飞知识回顾项目引入项目5设计了各种监测数据的处理器,通过控制结构处理复杂逻辑、用组合数据类型(列表、字典)组织结构化数据,并通过函数模块化代码。但在实际应用中,数据需要长期保存——比如环境监测系统中的温度、湿度数据,若程序关闭后数据丢失,将无法进行长期分析。实现数据的持久化存储是本项目的核心目标。项目描述项目6将设计一个网页版监测数据存储云盘,核心功能包括:文件与文件夹管理用户可通过网页界面创建文件(如sensor_2025.txt)或文件夹(如2025_data)。数据存储与读取在文本框中输入监测数据(如时间戳和温湿度值),点击保存后写入文件。可随时读取文件内容并在网页中显示。数据格式与持久化将用户输入的内容保存为本地文件(模拟“云存储”效果)。支持文本(.txt)和结构化数据(如.csv或.json)格式。项目效果相关知识:文件基本操作文件的概念文件是计算机中用于存储数据的基本单位,以特定格式保存在存储介质(如硬盘、U盘)中。它可以是文本文件,以字符编码存储可读内容;也可以是二进制文件,存储非文本数据。文件的类型文本文件如“.txt”,“.csv”,“.py”等文件二进制文件如“.exe”,“.dll”,“.mp4”等文件相关知识:文件基本操作文件操作流程打开文件→操作文件→关闭文件open()函数基本语法open(file,#文件路径(字符串或字节类型),必需参数mode='r',#打开模式(默认文本读模式)encoding=None,#文件编码(如'utf-8')**kwargs#其他可选参数)相关知识:文件基本操作文件操作流程打开文件→操作文件→关闭文件相关知识:文件基本操作文件打开模式值描述r只读模式(默认,可省略),文件指针指向文件头,若文件不存在则抛出异常w写模式,文件指针指向文件头,若文件已存在,则覆盖写入;若文件不存在,则创建x写模式,创建新文件,文件指针指向文件头,若文件已存在则抛出异常a追加模式,文件指针指向文件尾,不覆盖文件中原有内容+读写模式,与r/w/x/a一同使用,如r+、w+、x+、a+,在原功能基础上增加同时读写b二进制模式(可与其他模式组合使用),如rb、wb、ab、ab+t文本模式(默认,可省略)相关知识:文件基本操作上下文管理器(with语句)Python的with语句通过上下文管理器自动管理文件资源,确保文件操作后自动关闭,即使发生异常也能安全释放资源。相关知识:文件基本操作文本文件读写读取全部内容withopen("data.txt","r",encoding="utf-8")asf:content=f.read()#返回整个文件内容的字符串print(content)逐行读取withopen("data.txt","r",encoding="utf-8")asf:forlineinf:#逐行遍历,节省内存print(line.strip())#去除行尾换行符(如"Hello\n"→"Hello")相关知识:文件基本操作文本文件读写写入内容withopen("output.txt","w",encoding="utf-8")asf:#写入单个字符串(需手动添加换行符)f.write("Hello,Python!\n")
#写入多行内容(列表中的每个元素为一行)lines=["Line1\n","Line2\n","Line3\n"]f.writelines(lines)相关知识:文件基本操作文件读写常用方法方法描述read()一次读取文件所有内容,返回字符串read(size)从文件中读取size个字符作为结果返回readline()从文本文件中读取一行内容作为结果返回readlines()将文本文件中每行文本作为一个字符串存入列表,返回该列表seek(offset)将文件指针移到新位置,offset值:0-文件开头;1-当前位置;2-文件结尾write(s)把字符串s的内容写入文件wirtelines(l)将元素全为字符串的列表l写入文本文件,不添加换行符相关知识:文件编码基本概念文件编码是文本文件处理中的核心概念,它定义了字符(如字母、数字、符号)与二进制字节之间的映射规则,决定了数据如何存储和传输。常见编码类型相关知识:文件编码在Python中指定文件编码在Python中,推荐使用encoding参数显式指定文件编码,避免依赖系统默认设置,以确保跨平台一致性。示例6.1文件处理与异常捕获综合练习(6-ex-1.py)任务描述文件读取使用open()函数以只读模式打开文件,并指定UTF-8编码。使用with语句自动管理文件资源,确保异常时也能正确关闭。读取文件全部内容并计算其长度。根据文件内容长度进行相应计算,空文件会触发除零错误。异常处理捕获FileNotFoundError:处理文件不存在的场景。捕获ZeroDivisionError:处理空文件导致的除零错误。使用else块处理正常流程。使用finally块确保资源清理(演示用途)。状态反馈文件不存在时输出明确提示。计算错误时显示具体错误信息。操作成功时返回计算结果。示例6.1文件处理与异常捕获综合练习(6-ex-1.py)相关知识:面向对象程序设计(OOP)对比维度面向对象程序设计(OOP)面向过程程序设计编程思维模拟现实实体(对象为中心)线性步骤分解(函数为中心)数据与函数关系数据与方法绑定在对象内部(封装)数据与函数分离,通过参数传递核心概念类、对象、继承、多态、封装函数、变量、流程控制代码复用通过继承、组合复用已有类通过函数调用复用逻辑扩展性高(新增类或方法不影响旧代码)低(修改函数可能影响全局)复杂度管理天然模块化,适合大型项目适合简单逻辑,复杂项目易混乱典型场景GUI开发、游戏引擎、企业级系统脚本工具、数学计算、简单数据处理Python示例classDog:defbark(self):...defcalculate_sum(a,b):...相关知识:面向对象程序设计(OOP)几个重要概念的类比类设计图纸(汽车)对象根据图纸造出来的具体产品(一辆汽车)属性产品的特征(颜色、品牌等)方法产品的功能(驾驶、刹车等)相关知识:面向对象程序设计(OOP)类的定义与组成关键字class打头,类名采用大驼峰命名法类属性:所有实例共享的变量,和方法平级构造方法:第一个参数为self,初始化对象属性实例属性:每个实例独有的变量,通常在构造方法中赋值实例方法:第一个参数为self,用于操作实例的属性和行为类方法:第一个参数为cls,使用@classmethod装饰器,用于操作类属性或实现替代构造函数静态方法:使用@staticmethod装饰器,无self和cls参数,独立函数相关知识:面向对象程序设计(OOP)对象的创建与操作相关知识:面向对象程序设计(OOP)类属性和实例属性类属性是定义在类内部(与__init__平级)、被所有实例共享的公共数据成员,用于存储类级别的通用配置或共享状态。实例属性是绑定在具体对象上的独立数据,通过self在构造方法(__init__)中初始化,用于描述对象的个性化特征。相关知识:面向对象程序设计(OOP)类属性和实例属性通过类修改影响所有实例通过实例修改创建独立属性相关知识:面向对象程序设计(OOP)实例方法、类方法和静态方法实例方法通过创建的对象调用时,self参数会隐式传递,无需显式添加;若通过类去调用,则必须显式添加self参数。类方法使用@classmethod装饰,首参数为cls,调用主体是类本身,核心作用是操作类属性,实现类级别功能。类方法既可通过类直接调用,也可通过对象调用。静态方法使用@staticmethod装饰器声明,不自动接收self或cls,就像一个普通函数,但逻辑上与类相关。类名或对象实例均可调用,但不能访问或修改实例属性或类属性。相关知识:面向对象程序设计(OOP)面向对象程序设计三大特性类的封装打包+隐藏。将属性和方法组合在一起即为“打包”。通过访问控制保护数据完整性即为“隐藏”。类的继承继承是面向对象编程中实现代码复用和层次化设计的重要机制。它允许子类(派生类)自动获取父类(基类)的所有属性和方法,同时可以扩展新功能或重写现有方法。相关知识:面向对象程序设计(OOP)类的继承相关知识:面向对象程序设计(OOP)面向对象程序设计三大特性类的封装类和对象的定义。类的继承继承是面向对象编程中实现代码复用和层次化设计的重要机制。它允许子类(派生类)自动获取父类(基类)的所有属性和方法,同时可以扩展新功能或重写现有方法。类的多态同一操作作用于不同类的实例时,会产生不同的行为;通过统一的接口调用不同对象的方法。分为编译时多态(方法重载)和运行时多态(方法重写)。相关知识:面向对象程序设计(OOP)类的多态拓展知识:os库方法和属性功能说明chdir(path)把path设为当前工作目录getcwd()返回当前工作目录listdir(path)返回path中所有文件和文件夹名称组成的列表,不包含子文件夹中的文件mkdir(path)创建目录rmdir(path)删除目录,目录中不能有文件夹或子文件夹remove(path)删除指定的文件rename(src,dst)将文件名src重命名为dstsep文件路径中的分隔符walk(top,topdown=True,onerror=None,followlinks=False)目录树生成器,返回一个元组(dirpath,dirnames,filenames),其中dirpath为以top为根的整个目录树上的每个目录,dirnames为dirpath中所有子目录名称列表,filenames为dirpath中所有文件名列表拓展知识:os库拓展知识:os.path模块方法功能说明abspath(path)返回给定路径的绝对路径basename(path)返回指定路径的最后一个路径分隔符后面的部分dirname(path)返回指定路径的最后一个路径分隔符前面的部分exists(path)判断指定的路径是否存在,返回True或Falseisdir(path)判断指定的路径是否为文件夹,返回True或Falseisfile(path)判断指定的路径是否为文件,返回True或Falsejoin(path,*paths)连接两个或多个path,相邻路径之间插入路径分隔符,返回连接后的路径字符串normcase(path)把路径中所有字母改为小写,把所有斜杠改为反斜杠split(path)以路径中的最后一个斜杠为分隔符把路径分隔成两部分,返回元组splitext(path)从路径中分隔文件的扩展名,返回元组splitdrive(path)从路径中分隔驱动器的名称,返回元组拓展知识:os.path模块拓展知识:json模块JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,基于键值对(Key-Value)组织数据,支持嵌套结构(如对象、数组)。Py
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高职(水利工程施工技术)水利工程质量检测阶段测试题及答案
- 2026八年级上《实数》考点真题精讲
- 室内设计职业规划
- 中国高血压临床实践指南总结2026
- 新能源车市场:破局与创新-洞察市场趋势迎接营销挑战
- 冶金安全员职业发展指南
- 合肥新站就业指导
- 英语写作进阶之路-打造初中生英语写作新境界
- 构筑学生心理防线-教师角色下的心理问题防控
- 2026三年级上《分数的初步认识》知识闯关游戏
- FZT 60045-2014 汽车内饰用纺织材料 雾化性能试验方法
- 2023年全国中学生数学奥林匹克暨2023年全国,高中数学联合竞赛试题及答案(A卷)
- 检验科新员工岗前培训
- 第9章 语义分割
- 福建省厦门市地图矢量PPT模板
- 浙江省温州市2023年中考科学真题(附答案)
- 大学英语四级翻译课件
- 2021年公安机关人民警察基本级执法资格考试试卷(含答案)
- 2023年马克思主义基本原理概论课后习题答案修订版
- 幼儿园年中班主题方案《常见的用具》
- 《煤矿电工学》第七章采区供电设备选择及其计算课件
评论
0/150
提交评论