Python编程项目实战(微课版)-教案 吴雪飞_第1页
Python编程项目实战(微课版)-教案 吴雪飞_第2页
Python编程项目实战(微课版)-教案 吴雪飞_第3页
Python编程项目实战(微课版)-教案 吴雪飞_第4页
Python编程项目实战(微课版)-教案 吴雪飞_第5页
已阅读5页,还剩164页未读 继续免费阅读

下载本文档

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

文档简介

监控实验室场地数据教学任务项目4:网页版实验室场地数据监控器授课课时总时长:10学时课堂讲授:5学时课上实训:5学时授课时间第6周周二/3-4节第6周周二/5-6节第6周周四/1-2节第6周周四/3-4节第7周周二/3-4节第7周周二/5-6节第7周周四/1-2节第7周周四/3-4节第8周周二/3-4节第8周周二/5-6节授课地点知行园A座509一、教学分析学情分析

教学内容1. 列表的概念、特点及常用方法2. 列表推导式3. 集合的特点及常用方法4. 字典的概念、特点及常用方法5. 元组的概念及使用6. 字符串的特点、常用函数及转义字符学习目标素质目标(思政目标)1.培养学生具备创新意识和创新能力,能够在编程实践中探索新的思路、方法和技术,不断推动科技进步。2.培养学生具备团队协作和分享精神,能够与他人合作完成项目,分享经验和成果,共同推动社会发展。能力目标1.掌握列表及推导式的基本用法2.掌握集合的基本用法3.掌握字典的基本方法4.掌握元组的基本方法5.掌握字符串的基本用法知识目标1.熟悉几种组合数据类型的基本概念2.了解各种组合数据类型的特点及应用场景3.了解正则表达式的概念4.了解转义字符的概念教学重点1. 各种组合数据类型的基本用法及应用场景2. 列表推导式的用法3. 各种组合数据类型相互嵌套的用法教学难点1.列表推导式的算法设计2.各种组合数据类型相互嵌套的设计与访问二、教学策略教学设计1、 知识回顾:控制结构2、 通过目标效果展示,引入组合数据类型的应用场景3、介绍列表的概念、特点及常用方法,辅以示例4.1练习4、介绍列表排序、列表推导式及深复制浅复制的应用,辅以试一试4.1练习5、介绍集合、元组的特点和常用函数,辅以试一试4.2练习6、介绍字典的概念、特点及常用函数,辅以示例4.2和试一试4.3练习7、介绍字符串的特点及常用函数,辅以示例4.3和试一试4.4练习9、项目实现

教学资源菜鸟教程——哔哩哔哩——专业开发者社区——三、教学实施(一)课前通过回顾项目3:处理工业温度数据,复习分支循环结构的程序框架,同时引导学生思考:多种类型的工业数据如何记录?(组合数据类型)(二)课中问题引入:在许多实验室里,我们总能看到很多测试场地温度、湿度的控制器。这些控制器记录的是些什么数据?又是如何统计的呢?教学流程:器实现过程:将项目4分解成3个知识点示例+4个试一试+1个综合任务示例4.1:1、任务分析(由教师导课)(1)列表的概念;(2)列表的特点;(3)列表的常用方法:2、任务实施(学生实战演练)学生按照ppt示例,自己上机练习。具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)自学列表的其他方法试一试4.1:1、任务分析(由教师导课)列表排序列表的浅复制和深复制列表推导式2、任务实施(学生实战演练)学生按照ppt示例,自己上机练习。具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)Python列表使用时需注意:避免在循环中直接增删元素,谨慎处理浅拷贝问题,合理预分配空间以提升性能,并注意可变性带来的副作用。试一试4.2:1、任务分析(由教师导课)集合的概念集合的创建及常用操作集合的基本运算集合的应用场景元组的概念元组的基本特性元组的创建和基本操作元组的常用方法元组解包元组和列表的比较2、任务实施(学生实战演练)学生按照ppt示例完成相应练习。具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)元组不可变,适合存储常量数据以保证安全;集合元素唯一且无序,适合去重和成员检测,但需注意其不支持索引访问,且只能存储不可变类型元素。示例4.2:1、任务分析(由教师导课)(1)字典的概念(2)字典的基本特性(3)字典的创建方式(4)字典的基本操作(5)字典的常用方法(6)遍历输出字典的元素2、任务实施(学生实战演练)学生按照ppt示例自我完成代码编写,具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)字典使用时需注意:①键必须是不可变类型(如字符串、数字、元组);②避免在循环中直接修改字典大小(增删键),建议先记录再操作;③使用get()方法安全获取值,避免KeyError;④注意字典无序性(Python3.6后按插入序,但逻辑仍视为无序);示例4.3:1、任务分析(由教师导课)已知缺陷数据字典为product_info={"轴承":(["表面磨损","裂纹"],"振动检测"),"电路板":(["短路","虚焊"],"红外扫描"),"齿轮":(["断齿","磨损"],"噪声分析")}结构为:{产品类型:(缺陷列表,检测方案)}提示用户输入产品类型如:轴承、电路板、齿轮。根据输入的产品类型查询数据库若存在:提取缺陷列表和检测方案;格式化输出检测报告,包含产品类型标题;推荐检测方法;常见缺陷列表(逐项标记为*缺陷项)。若不存在:提示用户输出“未收录该产品,请联系工程师”2、任务实施(学生实战演练)学生按照ppt相关内容完成练习,具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)关注字典与其他组合数据类型的嵌套使用。试一试4.3:1、任务分析(由教师导课)字符串的概念字符串的创建字符串的基本操作字符串的常用方法转义字符转义字符的应用场景2、任务实施(学生实战演练)学生按照ppt相关内容完成练习,具体如下:试一试4.4:任务分析(由教师导课)某工厂使用视觉系统检测产品表面缺陷,需对检测数据进行分析。请完成以下数据处理任务数据初始化创建列表detections,包含5个字典,每个字典代表一个缺陷记录,键值对如下:“缺陷类型”(字符串):如“划痕”、“气泡”。“位置”(元组):坐标(x,y)。“尺寸”(浮点数):缺陷大小(单位:mm)。detections=[{"缺陷类型":"划痕","位置":(15,30),"尺寸":2.5},{"缺陷类型":"气泡","位置":(80,120),"尺寸":4.1},{"缺陷类型":"变形","位置":(45,90),"尺寸":3.8},{"缺陷类型":"划痕","位置":(200,80),"尺寸":5.2},{"缺陷类型":"杂质","位置":(60,150),"尺寸":1.7}]缺陷类型统计:遍历detections列表中的每个字典。将每个字典中的“缺陷类型”值收集到一个临时列表。将临时列表转换为集合,自动去重得到唯一缺陷类型集合。统计各类型缺陷数量,生成形如{"划痕":2,"气泡":1}的字典。最大缺陷分析:使用max()函数,指定key=lambdax:x["尺寸"],找到detections中“尺寸”最大的字典。提取其类型、尺寸、位置的值,存入元组,格式为(类型,尺寸,位置)。结果输出:格式化输出统计报告,包含:缺陷类型分布。最大缺陷信息。2、任务实施(学生实战演练)学生按照ppt相关内容完成练习,具体如下:项目4:1、任务拆解(由教师导课)(1)任务1:温度湿度数据状态监控(2)任务2:复杂温度湿度数据状态的统计2、任务1效果展示3、任务1实现要求任务2效果展示任务2实现要求任务小节整个项目的设计思路循序渐进,在前一个简单分支结构的处理逻辑过后,这次的项目添加了复杂字典数据的遍历,希望学生能在新的模式中逐渐熟悉工业流程的底层逻辑。(三)课后完成ET实训平台相关章节的练习四、教学反思与整改组合数据类型部分的难点在于如何让学生了解各种组合数据类型的特点和访问方式并将各种类型可以组合使用,可以通过加大练习来熟悉各类型的组合使用。教案5升级实验室监控系统升级实验室监控系统教学任务项目5:网页版实验室场地数据监控器(plus版)授课课时总时长:6学时课堂讲授:3学时课上实训:3学时授课时间第8周周四/1-2节第8周周四/3-4节第9周周二/3-4节第9周周二/5-6节第9周周四/1-2节第9周周四/3-4节授课地点知行园A座509一、教学分析学情分析学生已完成项目4,具备基础的温度与湿度监控系统开发经验,熟悉Python基本语法、列表、字典等数据结构的使用,能够编写简单的网页数据展示程序。但对函数封装、参数传递、代码复用等模块化编程思想尚未系统掌握,缺乏对多类型数据统一处理的经验。学生已具备初步的问题分析和代码实现能力,但在代码可维护性和扩展性方面意识较弱。

教学内容1.函数定义与调用:封装重复逻辑,提升代码复用性;2.参数传递机制:位置参数、关键字参数、默认参数、可变参数与参数解包;3.返回值与作用域:返回单值、多值、无返回值及变量作用域控制;4.高阶函数与递归函数:map、filter、reduce及递归思想的应用;5.库的使用:标准库与第三方库的导入与调用;6.项目实战:通过函数化重构实现多类型传感器数据的统一处理与展示。学习目标素质目标(思政目标)1.培养学生具备系统思维和模块化设计意识,能在编程中贯彻“高内聚、低耦合”原则;

2.增强学生的工程化编码习惯和代码复用意识,提升团队协作与代码共享能力;

3.引导学生形成持续重构和优化代码的职业素养,为后续复杂系统开发奠定基础。能力目标1.能够通过函数封装实现多类型传感器数据的统一处理;2.能够使用参数传递与返回值机制实现灵活的函数调用;3.能够运用高阶函数和递归函数简化复杂数据处理逻辑;4.能够使用库函数提升开发效率,避免重复造轮子。知识目标1.掌握函数的定义、调用与参数传递方式;2.理解返回值机制与变量作用域的控制方法;3.熟悉高阶函数与递归函数的使用场景与实现方式;4.了解Python标准库与第三方库的导入与使用方法教学重点1.函数封装与参数传递机制;2.多返回值与变量作用域控制;3.高阶函数与递归函数的应用;4.模块化编程思想在项目中的实践。教学难点1.参数传递中可变对象与不可变对象的区别;2.递归函数的终止条件设计与调用栈理解;3.多类型数据统一处理接口的设计与实现。二、教学策略教学设计1.采用案例驱动教学法,以“实验室监控系统升级”为主线,贯穿函数封装、参数传递、返回值处理等知识点;2.通过对比项目4与项目5的代码结构,引导学生理解函数化重构的优势;3.结合“试一试5.1”工业视觉缺陷检测案例,强化学生对函数复用与模块化设计的理解;4.课上实训环节指导学生完成unit5.py中的函数定义与主函数整合,并通过网页展示效果;5.课后布置买书系统、工人生产统计、股票模拟、医院挂号等练习项目,巩固函数设计与调用能力。

教学资源1.菜鸟教程——(函数与模块章节);2.哔哩哔哩——Python函数式编程专题视频;3.专业开发者社区——(搜索“Python函数封装案例”);4.项目5源代码与原始素材文件;5.在线编程环境:VSCode+Flask框架运行环境。三、教学实施(一)课前1.发布预习任务:阅读项目5文档中“相关知识”部分,理解函数定义、参数传递、返回值等概念;2.要求学生尝试运行项目4代码,思考如何扩展新增传感器类型;3.通过学习通推送预习测验题,检测学生对函数基础知识的掌握情况。(二)课中问题引入:在工业上,总有一些数据是需要快速处理后再反馈得到的,那么在Python中它是如何实现的呢?通过项目4的监控系统引入问题:当需要增加响度和明亮度监测时,如果直接扩展原有代码会导致大量重复。引导学生思考如何通过函数封装实现多类型数据的统一处理。教学流程:1.分析原有代码结构中存在的重复操作(数据验证、异常标记、结果计算等)2.介绍函数封装的优势:提高代码复用性、可维护性和扩展性3.展示项目5最终效果:通过网页界面展示多类型传感器数据的统一监控实现过程:将项目5分解成个6个知识点+1个示例+1个试一试+1个项目知识点1:函数定义与调用1、任务分析(由教师导课)(1)函数定义;(2)函数调用。2、任务实施(学生实战演练)学生按照ppt示例,自己上机练习。具体如下:#函数定义defshow_welcome():"""显示欢迎信息(无参函数)"""print("欢迎来到Python函数世界!")#函数调用show_welcome()#输出:欢迎来到Python函数世界!3、任务小结(由教师引导/或以问题与讨论的形式)设计函数时应尽量考虑功能的独立性,代码简洁明确,不要混合其他功能,防止降低函数的有效使用率。知识点2:参数传递任务分析(由教师导课)(1)位置参数;(2)关键字参数;(3)默认参数;(4)可变参数;(5)参数解包;(6)参数传递机制。2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。部分代码如下:#位置参数defpower(base,exponent):returnbase**exponentprint(power(2,3))#2^3=8#关键字参数print(power(exponent=3,base=2))#显式命名参数#输出:8#默认参数defcalculate_volume(length,width,height=1):"""计算长方体体积(带默认参数)"""returnlength*width*heightprint(calculate_volume(3,4))#使用默认高度1→12print(calculate_volume(2,5,10))#显式指定高度→100#错误示例:默认值为可变对象defadd_item(item,items=[]):items.append(item)returnitemsprint(add_item("apple"))#['apple']print(add_item("banana"))#['apple','banana']❌默认列表被共享!#正确做法:默认值设为None,函数内初始化defadd_item_fixed(item,items=None):ifitemsisNone:items=[]items.append(item)returnitemsprint(add_item_fixed("apple"))#['apple']print(add_item_fixed("banana"))#['banana']✅3、任务小结(由教师引导/或以问题与讨论的形式)可变参数的设置非常灵活且用途广泛,需要关注。知识点3:返回值与作用域任务分析(由教师导课)(1)返回单个值;(2)返回多个值;(3)无返回值;(4)变量作用域;2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。部分代码如下:#返回单个值defcelsius_to_fahrenheit(c):"""摄氏转华氏温度"""returnc*9/5+32print(f"37℃={celsius_to_fahrenheit(37):.1f}℉")#输出:37℃=98.6℉#返回多个值defanalyze_numbers(numbers):"""返回数列的极值和平均值"""returnmax(numbers),min(numbers),sum(numbers)/len(numbers)max_val,min_val,avg=analyze_numbers([85,92,78,90])print(f"最高分:{max_val},最低分:{min_val},平均分:{avg:.1f}")3、任务小结(由教师引导/或以问题与讨论的形式)返回值需明确类型,避免混用;作用域分全局、局部,函数内变量默认局部,需修改全局变量时用global声明。避免跨作用域直接修改,防止逻辑混乱或数据污染。知识点4:高阶函数任务分析(由教师导课)(1)map函数;(2)filter函数;(3)reduce函数;2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。部分代码如下:#使用mapnumbers=[1,2,3,4]squared=list(map(lambdax:x**2,numbers))#[1,4,9,16]#使用列表推导式squared=[x**2forxinnumbers]#定义一个函数,用于判断一个数是否为偶数defis_even(num):returnnum%2==0#定义一个列表numbers=[1,2,3,4,5,6,7,8,9,10]#使用filter函数过滤出列表中的偶数even_numbers=filter(is_even,numbers)#将结果转换为列表并打印print(list(even_numbers))#输出:[2,4,6,8,10]3、任务小结(由教师引导/或以问题与讨论的形式)map:处理后返回迭代器,需转换为列表查看结果;filter:保留返回True的元素,注意函数返回值类型;reduce:需导入functools,处理序列为单个值,初始值影响结果。高阶函数能增强代码抽象能力,通过接收或返回函数,实现逻辑复用(如通用遍历)、行为参数化(动态改变功能),简化代码结构,助力函数式编程范式,提升灵活性与可维护性。知识点5:递归函数任务分析(由教师导课)(1)递归函数概念;(2)递归函数执行逻辑;(3)递归函数注意事项;2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。部分代码如下:#递归函数示例deffactorial(n):ifn==1:#终止条件:最小套娃(1的阶乘就是1)return1else:returnn*factorial(n-1)#拆解问题:5!=5×4!print(factorial(5))#输出1203、任务小结(由教师引导/或以问题与讨论的形式)递归函数一般在处理树状结构(比如文件夹遍历);解决分步骤的问题(比如汉诺塔);当问题可以分解成相同的小问题时用途广泛。但需要注意的是:忘记终止条件会导致无限循环;递归层数太深可能让程序崩溃;有些问题用循环解决效率更高。知识点6:库的使用任务分析(由教师导课)(1)库的概念;(2)库的导入;2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。部分代码如下:#方式1:导入整个模块(推荐)importosprint(os.getcwd())#需要带模块名前缀#方式2:导入特定功能fromosimportmkdir,renamemkdir("new_folder")#直接使用函数名#方式3:别名导入(处理长模块名)importnumpyasnpimportpandasaspdarr=np.array([1,2,3,4,5])data=pd.DataFrame({'姓名':['张三','李四','王五'],'年龄':[25,30,28],'城市':['北京','上海','广州']})3、任务小结(由教师引导/或以问题与讨论的形式)Python库主要分为两大类:标准库(如os、sys、datetime、json)随Python安装自带,提供基础功能支持;第三方库(如numpy、pandas、requests、Django)需额外安装,扩展了科学计算、数据分析、Web开发等高级能力。示例5.1任务分析(由教师导课)(1)编写函数is_prime(n),判断一个数n是否为素数,函数参数为n。(2)从键盘输入m,调用函数寻找比m小的最大孪生素数对,并打印该素数对。所谓孪生素数即相差为2的一对素数。2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。代码如下:importmathdefis_prime(n):ifn<=1:returnFalseforiinrange(2,int(math.sqrt(n))+1):ifn%i==0:returnFalsereturnTruem=int(input("请输入一个正整数m:"))largest_twin_primes=()#寻找小于m的最大孪生素数对fornuminrange(m-1,1,-1):ifis_prime(num)andis_prime(num-2):largest_twin_primes=(num-2,num)break#输出结果iflargest_twin_primes:print(f"小于{m}的最大孪生素数对是:{largest_twin_primes}")else:print(f"在{m}以下没有找到孪生素数对。")3.任务小结(由教师引导/或以问题与讨论的形式)思考:能否把寻找小于m的最大孪生素数对的功能也写成一个函数?试一试5.1任务分析(由教师导课)(1)数据预处理函数的编写;(2)缺陷等级判断函数的编写;(3)统计报告生成函数的编写;(4)主函数整合多个功能。2、任务实施(学生实战演练)学生按照ppt步骤,自己上机完成代码编写。部分代码如下:#任务1:数据预处理函数defpreprocess_data(raw_data):valid_data=[]foriteminraw_data:if"defects"initemandisinstance(item["defects"],int)anditem["defects"]>=0:valid_data.append(item)returnvalid_data#任务2:缺陷等级判断函数defjudge_defect_level(defect_num):ifdefect_num==0:return"合格"elif1<=defect_num<=2:return"轻微瑕疵"else:return"严重缺陷"3.任务小结(由教师引导/或以问题与讨论的形式)首先,在数据预处理环节,需要从原始数据中过滤掉无效记录;接着,在缺陷等级判断环节,需要依据缺陷数对产品进行分类;然后,在统计报告生成环节,需要计算若干关键指标;最后,在主函数整合环节,需要把上述步骤串联起来。项目5:1、项目拆解(由教师导课)2、效果展示3、实现要求4、任务小结(由教师引导/或以问题与讨论的形式)通过此次项目,学生掌握了函数封装和模块化编程的基本方法,理解了"高内聚、低耦合"的设计原则,为后续复杂系统开发奠定了基础。(三)课后1.复制相关文件,改写部分代码,实现主题数据的不同页面展示2.完成ET实训平台相关章节的练习四、教学反思与整改函数部分的重点在于培养学生模块化设计程序的思想,后续章节的代码编写要尽量使用函数,以体现知识体系的连贯性。教案6存储监测数据到云端存储监测数据到云端教学任务项目6:网页版监测数据存储云盘授课课时总时长:6学时课堂讲授:3学时课上实训:3学时授课时间第10周周二/3-4节第10周周二/5-6节第10周周四/1-2节第10周周四/3-4节第11周周二/3-4节第11周周二/5-6节授课地点知行园A座509一、教学分析学情分析学生已完成项目5的学习,掌握了使用控制结构处理复杂逻辑、组合数据类型(列表、字典)组织结构化数据,并通过函数模块化代码。具备基本的编程思维和代码实现能力,但对文件操作、异常处理和面向对象编程尚未系统学习,缺乏实际项目中数据持久化存储的经验。

教学内容1.文件基本操作(打开、读写、关闭,文本与二进制文件区别)2.文件编码与异常处理3.面向对象程序设计(类与对象、封装、继承、多态)4.使用os和os.path模块进行文件系统操作5.JSON模块的基本使用6.综合实战:实现网页版监测数据存储云盘学习目标素质目标(思政目标)1.培养学生系统化设计思维和模块化编程习惯,提升代码可维护性和扩展性。2.增强异常处理与资源管理意识,养成严谨的编程习惯。3.通过项目实战锻炼解决实际问题的能力,培养工程实践与创新意识。能力目标1.能够熟练进行文件的创建、读写、关闭等基本操作。2.能够使用面向对象方法设计并实现文件信息管理类。3.能够结合os、json等模块实现数据的持久化存储与读取。4.能够处理文件操作中常见的异常,编写健壮的程序知识目标1.掌握文件的基本概念、类型及操作流程。2.理解文件编码的作用及常见编码类型。3.掌握面向对象的基本概念、类与对象的创建和使用。4.熟悉os、os.path、json等常用模块的基本用法。教学重点1.文件的基本操作(打开、读写、关闭)及上下文管理器的使用2.面向对象程序设计中的类与对象、封装特性3.使用os模块进行目录和文件管理教学难点1.文件编码的理解与正确处理2.面向对象中类与实例属性的区别、三种方法(实例/类/静态方法)的理解与应用3.异常处理机制的综合运用二、教学策略教学设计采用"项目驱动+知识点分解+实战演练"的模式:1.通过"监测数据存储云盘"项目引入,激发学习兴趣。2.将项目分解为文件操作、面向对象、系统模块使用等知识点,结合示例讲解。3.通过"试一试"环节巩固每个知识点,最后完成综合项目实战。4.采用讲授、演示、练习、讨论等多种教学方法,注重学生动手实践与问题解决能力的培养。

教学资源1.菜鸟教程——(文件操作、面向对象专题)2.哔哩哔哩——(搜索"Python文件操作""Python面向对象编程"等相关视频)3.专业开发者社区——(解决常见编程问题)4.课程代码示例、PPT课件、项目素材文件。三、教学实施(一)课前1.发布预习任务:要求学生阅读项目6文档中"文件基本操作""面向对象程序设计"两部分内容,并思考如何将项目5的监测数据持久化保存。2.在学习通平台发布预习测验题(如文件打开模式有哪些?什么是类?)。(二)课中问题引入:回顾项目5:我们设计了监测数据的处理器,但程序关闭后数据丢失。如何实现数据的长期保存?——引入文件存储与面向对象封装的需求。教学流程:将项目6分解为:5个核心知识点+1个综合项目实战实现过程:知识点1:文件基础操作知识点1.1:文件概念与打开关闭(25分钟)1、任务分析(由教师导课)(1)文件概念;(2)文件类型区分(文本VS二进制);(3)文件路径(绝对/相对)2、任务实施(学生实战演练)演示open()函数使用,不同模式区别(r/w/a等),with语句优势。学生按照ppt示例,自己上机练习。具体如下:#打开文件file=open("example.txt","r")#模式r:只读(默认)#操作文件content=file.read()#关闭文件(必须!否则可能导致资源泄漏)file.close()#上下文管理器(with语句)withopen("file.txt","r")asf:#在此进行文件操作content=f.read()#退出with代码块后,文件自动关闭3、任务小结(由教师引导/或以问题与讨论的形式)强调文件操作"打开-操作-关闭"基本流程,资源释放重要性。知识点1.2:文件读写方法(20分钟)1、任务分析(由教师导课)对比read()/readline()/readlines()和write()/writelines()方法适用场景。2、任务实施(学生实战演练)学生练习读取整个文件、逐行读取、写入内容的代码实现。具体如下:#读取全部内容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)3、任务小结(由教师引导/或以问题与讨论的形式)讨论不同读写方法的内存效率和使用场景。知识点2:文件编码与异常处理知识点2.1:文件编码处理(25分钟)任务分析(由教师导课)讲解编码概念(UTF-8/GBK/ASCII),乱码产生原因与解决方法。2、任务实施(学生实战演练)演示指定编码读写文件,处理编码不一致导致的UnicodeDecodeError。学生按照ppt示例完成相应练习。具体如下:#读取文件(UTF-8编码),此时data.txt文件编码必须为utf-8,否则会报错withopen("data.txt","r",encoding="utf-8")asf:content=f.read()#写入文件(GBK编码)withopen("output.txt","w",encoding="gbk")asf:f.write("中文内容")3、任务小结(由教师引导/或以问题与讨论的形式)强调统一使用UTF-8编码的重要性,养成显式指定编码的习惯。知识点2.2:文件操作异常处理-示例6.1(20分钟)1、任务分析(由教师导课)(1)讲解常见文件操作异常(FileNotFoundError/PermissionError等)(2)根据示例6.1任务要求完成文件读取、异常处理及状态反馈。2、任务实施(学生实战演练)使用try-except-finally处理文件不存在、权限不足等异常场景。学生按照ppt示例完成相应练习。具体如下:defdivide_file(file_path):file=Nonetry:file=open(file_path,"r")content=file.read()#模拟数据处理result=len(content)/0#人为制造除零错误exceptFileNotFoundError:print("文件不存在")exceptZeroDivisionErrorase:print(f"计算错误:{str(e)}")else:print("操作成功完成")returnresultfinally:iffileandnotfile.closed:file.close()print("文件已安全关闭")#测试案例1:文件不存在divide_file("nonexistent.txt")#输出→文件不存在\n文件已安全关闭#测试案例2:文件存在但触发除零错误divide_file("existing_file.txt")#输出→计算错误:divisionbyzero\n文件已安全关闭#测试案例3:正常流程(需移除除零错误)#输出→操作成功完成\n文件已安全关闭3、任务小结(由教师引导/或以问题与讨论的形式)讨论异常处理对程序健壮性的重要性,finally块的资源保障作用。知识点3:面向对象基础知识点3.1:类与对象概念(25分钟)1、任务分析(由教师导课)通过"汽车工厂"类比讲解类与对象关系,类作为蓝图,对象作为实例。2、任务实施(学生实战演练)演示类的定义(class关键字)、属性方法添加、对象创建和使用。学生按照ppt示例完成相应练习。具体如下:classCar:

"""汽车类(文档字符串,说明类功能)"""

#类属性(所有汽车共有的属性)

wheels=4

fuel_type="汽油"

def__init__(self,brand,color):

"""构造方法:初始化实例属性"""

self.brand=brand

#实例属性(每辆车独有)

self.color=color

eage=0

#初始里程为0

defdrive(self,distance):

"""实例方法:模拟驾驶行为"""

eage+=distance

print(f"{self.brand}行驶了{distance}公里,总里程:{eage}")

@classmethod

defchange_fuel(cls,new_fuel):

"""类方法:修改所有汽车的燃料类型"""

cls.fuel_type=new_fuel

print(f"所有汽车燃料已改为:{new_fuel}")

@staticmethod

defcheck_license_plate(plate):

"""

静态方法:检查车牌号是否有效

参数:

plate(str):车牌号

返回:

bool:如果车牌长度为7则返回True,否则返回False

"""

returnlen(plate)==7#创建两个汽车对象car1=Car("Tesla","红色")car2=Car("BMW","蓝色")#访问属性print(car1.brand)#输出:Teslaprint(car2.wheels)#输出:4(继承自类属性)#调用方法car1.drive(50)#输出:Tesla行驶了50公里,总里程:50car2.drive(80)#输出:BMW行驶了80公里,总里程:803、任务小结(由教师引导/或以问题与讨论的形式)理解面向对象的基本概念,类作为模板,对象作为具体实例。知识点3.2:属性类型与方法(20分钟)任务分析(由教师导课)讲解类属性与实例属性的区别,三类方法(实例/类/静态方法)的异同。2、任务实施(学生实战演练)编写包含不同类型属性和方法的类,演示各自调用方式和适用场景。学生按照ppt示例完成相应练习。部分代码如下:#初始状态print(car1.wheels,car2.wheels)#输出:44#修改类属性Car.wheels=6#验证变化print(car1.wheels)#输出:6(仍访问类属性)print(car2.wheels)#输出:6#car1创建自己的wheels属性car1.wheels=8#再次修改类属性Car.wheels=10#验证结果print(Car.wheels)#输出:10print(car1.wheels)#输出:8(实例属性屏蔽类属性)print(car2.wheels)#输出:10(仍使用类属性)tesla=Car("Tesla","红色")tesla.drive(50)#✅正确调用→Tesla行驶了50公里,总里程:50Car.drive(tesla,30)#✅等效调用→Tesla行驶了50公里,总里程:80#Car.drive(30)#❌错误:缺少实例参数self3、任务小结(由教师引导/或以问题与讨论的形式)明确不同类型属性和方法的使用场景和区别。知识点4:面向对象高级特性知识点4.1:封装特性与应用(25分钟)任务分析(由教师导课)讲解封装的概念和优势,通过命名约定实现数据隐藏和保护。2、任务实施(学生实战演练)演示私有属性(__开头)的使用,通过方法控制对属性的访问和修改。学生按照ppt示例完成相应练习。具体如下:def__init__(self,brand,color):self.brand=brandself.color=colorself.__mileage=0#私有属性:里程数不应该被直接修改3、任务小结(由教师引导/或以问题与讨论的形式)理解封装如何提高代码安全性和可维护性。知识点4.2:继承与多态(20分钟)任务分析(由教师导课)讲解继承实现代码复用,多态实现同一接口不同行为。2、任务实施(学生实战演练)创建父类和子类,演示方法重写和多态调用的实际效果。学生按照ppt示例完成相应练习。部分代码如下:classElectricCar(Car):#继承自Car类"""电动汽车类,继承自Car"""def__init__(self,brand,color,battery_capacity):"""初始化电动汽车特有的属性"""super().__init__(brand,color)#调用父类的__init__方法self.battery_capacity=battery_capacity#电动汽车特有属性self.remaining_battery=100#剩余电量百分比defcharge(self,percent):"""电动汽车特有的充电方法"""self.remaining_battery+=percentifself.remaining_battery>100:self.remaining_battery=100print(f"{self.brand}已充电至{self.remaining_battery}%")#重写父类的drive方法defdrive(self,distance):"""重写驾驶方法,考虑电量消耗"""power_consumption=distance*0.5#假设每公里消耗0.5%电量ifpower_consumption>self.remaining_battery:print(f"电量不足!剩余电量:{self.remaining_battery}%")returnself.remaining_battery-=power_consumptionsuper().drive(distance)#调用父类的drive方法print(f"剩余电量:{self.remaining_battery}%")classGasCar(Car):"""汽油车"""defrefuel(self):print(f"{self.brand}正在加{self.fuel_type}油")classElectricCar(Car):"""电动车"""def__init__(self,brand,color):super().__init__(brand,color)self.fuel_type="电"defrefuel(self):print(f"{self.brand}正在充电")defgo_to_gas_station(car):car.refuel()#不管什么车,都调用refuel方法#创建不同的车my_car=GasCar("丰田","白色")your_car=ElectricCar("特斯拉","黑色")#用同样的方式调用go_to_gas_station(my_car)#输出:丰田正在加汽油油go_to_gas_station(your_car)#输出:特斯拉正在充电3、任务小结(由教师引导/或以问题与讨论的形式)掌握继承减少代码冗余,多态提高程序灵活性的价值。知识点5:系统模块使用知识点5.1:os和os.path模块(25分钟)任务分析(由教师导课)讲解os模块进行文件系统操作(创建/删除/重命名/遍历等)。2、任务实施(学生实战演练)演示os.getcwd()/os.listdir()/os.mkdir()等常用方法的使用。学生按照ppt示例完成相应练习。具体如下:importos#获取当前工作目录current_dir=os.getcwd()print(f"当前工作目录:{current_dir}")#输出示例:C:\Users\user\projects#切换工作目录os.chdir("../")#切换到上级目录print(f"切换后目录:{os.getcwd()}")#输出示例:C:\Users\user#创建新目录(默认创建单层目录)os.mkdir("test_folder")#创建名为test_folder的文件夹print("目录创建成功"ifos.path.exists("test_folder")else"创建失败")#列出目录内容(默认当前目录,返回文件名列表)files=os.listdir()#不传参数则列出当前目录print(f"目录内容:{files}")#输出示例:['test_folder','main.py',...]#切换回原始目录并验证os.chdir(current_dir)print(f"最终工作目录:{os.getcwd()}")#创建测试路径(注意:实际路径需根据你的系统调整)base_dir=r"D:\python_demo"

file_path=os.path.join(base_dir,"data","test.txt")

#路径拼接#1.路径拆解print("完整路径:",file_path)

#输出:完整路径:D:\python_demo\data\test.txtprint("目录部分:",os.path.dirname(file_path))

#输出:目录部分:D:\python_demo\dataprint("文件名部分:",os.path.basename(file_path))

#输出:文件名部分:test.txt#2.路径分割(自动处理不同系统斜杠)dir_part,file_part=os.path.split(file_path)print(f"分割结果→目录:{dir_part},文件:{file_part}")

#输出:分割结果→目录:D:\python_demo\data,文件:test.txt#3.路径存在性验证print("路径存在?",os.path.exists(file_path))

#输出:路径存在?Falseprint("是目录?",os.path.isdir(base_dir))

#输出:是目录?Falseprint("是文件?",os.path.isfile(file_path))

#输出:是文件?False#4.创建目录和文件(模拟实际操作)os.makedirs(os.path.dirname(file_path))

#创建多级目录withopen(file_path,"w")asf:

#创建文件

f.write("示例内容")#5.再次验证print("\n创建后验证:")print("路径存在?",os.path.exists(file_path))

#输出:路径存在?Trueprint("是目录?",os.path.isdir(os.path.dirname(file_path)))

#输出:是目录?Trueprint("是文件?",os.path.isfile(file_path))

#输出:是文件?True#6.清理操作(实际使用时需谨慎)os.remove(file_path)

#删除文件os.rmdir(os.path.dirname(file_path))

#删除data目录os.rmdir(base_dir)

#删除根目录3、任务小结(由教师引导/或以问题与讨论的形式)掌握使用os模块进行跨平台文件系统操作的能力。知识点5.2:JSON模块使用(20分钟)任务分析(由教师导课)讲解JSON格式特点,Python与JSON数据类型的对应关系。2、任务实施(学生实战演练)演示json.dumps()/json.loads()和json.dump()/json.load()的使用。学生按照ppt示例完成相应练习。部分代码如下:importjsondata={"name":"张三","age":25,"skills":["Python","Java"]}json_str1=json.dumps(data)json_str2=json.dumps(data,indent=2,ensure_ascii=False)print("不带参数的JSON数据:\n",json_str1)print("带参数的JSON数据:\n",json_str2)#输出不带参数的JSON数据:{"name":"\u5f20\u4e09","age":25,"skills":["Python","Java"]}带参数的JSON数据:{"name":"张三","age":25,"skills":["Python","Java"]}withopen("data.json","w",encoding="utf-8")asf:json.dump(data,f,indent=2,ensure_ascii=False)3、任务小结(由教师引导/或以问题与讨论的形式)掌握JSON序列化与反序列化的方法,理解其在数据持久化中的应用。项目6:网页版监测数据存储云盘1、项目拆解(由教师导课)2、效果展示3、实现要求(1)教师演示项目效果,讲解FileInfo类的设计与四个核心函数(创建文件/夹、读写文件)的实现。(2)学生根据提供的代码框架完成unit6.py和file_info.py,实现网页操作文件的功能。(3)调试与展示:运行main.py,在浏览器中测试文件操作功能,教师巡视指导。(4)项目总结:回顾本项目用到的关键技术点,讨论实际应用场景。、(三)课后1.完成课后练习:基础文件读写、文件备份、学生成绩管理系统(任选其一)2.在CC网提交代码和运行截图3.扩展思考:如何将数据存储到真实的云服务器(如阿里云OSS)?四、教学反思与整改本次课通过项目实战将文件操作与面向对象编程有机结合,学生积极性较高。多数能独立完成文件读写和类的定义,但在理解类方法与静态方法、处理文件编码时存在困难。后续需增加对比示例和调试练习,强化面向对象思维。建议通过小组协作形式完成课后练习,促进交流与互助。定期通过问卷星收集学情反馈,及时调整教学节奏与重点。教案7生成检测数据统计看板生成检测数据统计看板教学任务项目7:网页版缺陷检测数据图表生成器授课课时总时长:8学时课堂讲授:4学时课上实训:4学时授课时间第11周周四/1-4节第12周周二/3-6节第12周周四/1-4节第13周周二/3-6节授课地点知行园A座509一、教学分析学情分析到目前为止,学生对前续章节的知识掌握及前后知识的衔接还存在一定问题,经常出现学了后面忘了前面的情况,需督促学生制定合理的课程学习计划,勤加练习。

教学内容本单元围绕“生成检测数据统计看板”项目展开,系统讲解NumPy、Pandas、Matplotlib三大Python数据分析与可视化库的使用,重点包括:1.NumPy数组创建与操作;2.Pandas数据结构(Series、DataFrame)及数据清洗方法;3.使用Matplotlib绘制折线图、柱状图、饼图、箱线图、散点图等图表;4.综合运用上述工具实现缺陷检测数据的可视化分析看板。学习目标素质目标(思政目标)1.培养学生数据思维与可视化表达能力,增强质量意识与数据驱动的决策能力。2.通过工业质检数据分析,引导学生认识精益生产与质量管理的重要性,树立严谨务实的工作作风。能力目标1. 能够使用Pandas读取Excel数据并进行清洗、统计与分组。2. 能够使用Matplotlib绘制常见统计图表并组合成可视化看板。3. 能够综合运用NumPy、Pandas、Matplotlib完成数据分析与可视化任务。知识目标1. 掌握NumPy数组的基本操作与属性。2. 掌握Pandas的Series与DataFrame结构及常用数据操作。3. 掌握Matplotlib绘图的基本语法与图表类型。4. 理解数据可视化看板的构成与布局方法。教学重点1.Pandas数据清洗与统计方法;2.Matplotlib常见图表的绘制与定制;3.综合项目:从数据读取到可视化看板的完整流程。教学难点1.多图表组合布局(Figure、Axes、Subplot);2.数据分组统计与可视化映射;3.异常数据处理与图表优化。二、教学策略教学设计采用“项目驱动+任务分解”教学模式,以“缺陷检测数据可视化看板”为主线,分模块讲解NumPy、Pandas、Matplotlib的使用,结合示例代码演示与课堂实训,引导学生逐步完成项目。课后布置综合练习,巩固知识并提升综合应用能力。

教学资源菜鸟教程——哔哩哔哩——专业开发者社区——三、教学实施(一)课前发布预习任务:1.复习Python基础语法与文件操作;2.预习NumPy、Pandas、Matplotlib官方文档或教程;3.下载“缺陷检测数据.xlsx”示例文件,尝试用Excel查看数据结构。(二)课中问题引入:工业生产中如何快速发现质量问题?仅靠存储检测数据不够,需要可视化分析工具帮助决策。项目分析:项目7旨在构建一个网页版缺陷检测数据图表生成器,实现数据解析、清洗、统计与可视化展示。实现过程:数据读取→数据清洗→统计分析→图表绘制→看板布局知识点1:NumPy库基础1、任务分析(由教师导课)(1)numpy数组的创建;(2)numpy数组的属性;(3)numpy数组的基本操作;2、任务实施(学生实战演练)学生按照ppt示例,自己上机练习。具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)Numpy库是科学计算中专门用于处理大型多维数组和矩阵的第三方库,可以将列表转为数组进行更灵活的数据处理。知识点2:Pandas数据处理1、任务分析(由教师导课)(1)pandas库的功能介绍;(2)pandas库核心数据结构:Series类和DataFrame类;(3)DataFrame类的访问方式;(4)pandas存取excel文件(5)pandas进行数据清洗:检测缺失值;处理缺失值2、任务实施(学生实战演练)学生按照ppt内容,完成相应知识点练习。具体如下:3、任务小结(由教师引导/或以问题与讨论的形式)Pandas库在处理excel文件时可将excel文件读取成DataFrame类型数据,由于excel文件存储数据的形式与DataFrame数据类型极为相似,因此使用DataFrame的几种访问方式就可以轻松访问到excel表中的各部分数据。知识点3:Matplotlib数据可视化1、任务分析(由教师导课)(1) matplotlib库的功能介绍与导入(2) 绘图函数的介绍(3) plt绘制折线图(4) 使用画布工具绘制多个折线图(5) 通过自定义数据序列,绘制正弦曲线和余弦曲线(6) 通过自定义数据序列,绘制垂直柱状图(7)通过自定义数据序列,绘制饼图(8)通过读取文件数据绘制柱状图并进行优化2、任务实施(学生实战演练)学生按照ppt示例完成相应练习。具体如下:3、任务小结(由教

温馨提示

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

评论

0/150

提交评论