版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教案首页(以2课时为单位)课序第1次学时2周次1教学内容第一章绪论教学目标知识熟悉Python语言的起源、核心特点与应用领域;掌握IDLE、Anaconda两类主流开发环境的安装与使用方式;理解模块、包、库的概念,掌握pip工具的基础用法与模块导入语法;掌握Python程序的基本结构、开发流程与运行机制。能力能独立安装Python/Anaconda并配置环境变量;能使用pip完成第三方库的安装、查看、卸载;能编写并运行简单Python输出程序;能区分交互式与文件式运行方式。素养建立Python整体认知,激发编程学习兴趣;养成规范编码、环境配置与代码调试习惯;理解开源生态,培养工程化编程思维。教学重点1.Python语言的核心特点与应用场景。
2.IDLE交互式/文件式开发流程、Anaconda基础使用。
3.pip工具常用命令、模块导入的三种语法。
4.Python程序两种运行方式的区别。教学难点1.模块、包、库的概念区分。
2.不同模块导入语法的适用场景。
3.Python解释运行的底层逻辑。教学方法手段讲授法、案例导入法、演示教学法、任务驱动法、启发提问法教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思学生对模块/包/库理解教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532教学设计内容导入展示Python常见应用场景案例:豆瓣/知乎后台架构、AI大模型训练框架、数据可视化图表、自动化办公脚本截图,提问引导:“这些功能可以用什么工具实现?为什么现在越来越多领域选择Python?”引出本节课主题:从0认识Python,搭建第一个Python开发环境,写出第一行Python代码。内容介绍(一)认识Python1.Python简介起源:1989年吉多·范罗苏姆设计,命名源自喜剧《蒙提·派森的飞行马戏团》,1991年发布第一个公开版本,现有Python2.x(已停更)、Python3.x两大系列。核心标签:开源、跨平台、解释型高级语言,语法简洁、扩展库丰富、生态完整。2.Python语言特点逐一讲解7个核心特点:易于学习、解释性、面向对象、可移植性、可扩展性、丰富的库、活跃社区支持。3.Python应用领域结合课件配图讲解四大核心场景:(1)Web开发:Django/Flask框架,代表产品豆瓣、知乎、YouTube。(2)数据分析:NumPy、Pandas、Matplotlib库,支撑企业数据采集、清洗、可视化分析。(3)人工智能:TensorFlow、PyTorch框架,是当前AI领域首选开发语言。(4)其他场景:自动化运维(Ansible)、游戏开发(Pygame)、网络爬虫(Scrapy)。(二)Python开发环境安装和使用1.主流开发环境介绍对比四类工具适用场景:工具特点适用人群IDLEPython自带轻量IDE,含交互式提示符、编辑器、调试器初学者入门PyCharm功能全面的专业PythonIDE中大型项目开发VSCode轻量跨平台,插件生态丰富多语言开发者Anaconda集成Python解释器、conda包管理器、190+科学计算库,支持多环境管理数据分析/AI方向学习者2.IDLE安装与使用(1)安装步骤访问Python官网下载对应版本安装包→勾选“AddPythontoPATH”→选择默认安装/自定义路径安装→验证安装成功(打开IDLE无报错)。(2)两种使用模式演示①交互式:打开IDLE直接输入print("Hello!")回车执行,即时查看结果。②文件式:新建.py文件→编写代码→保存→按F5运行。3.Anaconda安装与使用安装:官网下载对应系统安装包,一路默认下一步即可。JupyterNotebook:网页式编程。Spyder:科学计算IDE。(三)模块、包和库1.基础概念区分(1)模块:单个.py代码文件,是功能实现基本单元,可直接导入复用。(2)包:组织多个相关模块的目录,必须包含__init__.py文件,避免命名冲突。(3)库:多个模块的集合,分为三类:内置模块(解释器自带)、标准库(Python安装包自带)、扩展库(需额外安装)。2.pip工具使用演示命令行操作流程:Win+R→输入cmd打开命令提示符,讲解常用命令。命令作用示例piplist查看已安装包piplistpipinstall库名安装扩展库pipinstallnumpypipuninstall库名卸载扩展库pipuninstallnumpypipshow库名查看库信息pipshowpandas3.模块导入语法结合交互式演示三种导入方式:(1)方式1:import模块名[as别名]——导入整个模块,使用时需加前缀。(2)方式2:from模块名import对象名[as别名]——只导入需要的函数/类,直接使用无需前缀。方式3:from模块名import*——导入模块所有对象(不建议大型项目使用,易命名冲突)。补充规范:导入顺序优先标准库,再第三方库,最后本地自定义模块;独立运行脚本可通过if__name__=="__main__":判断执行逻辑。(四)Python程序结构及开发过程、运行方式(10分钟)1.Python程序结构包→模块(.py文件)→函数/类→语句→表达式,逐层嵌套。2.Python程序开发过程分析问题→用Python描述解决方案→运行调试验证效果,遵循“输入-处理-输出”基本模式。3.Python运行方式对比运行方式特点适用场景交互式逐行输入逐行执行,即时出结果。代码测试、简单计算文件式代码保存为.py文件,一次性解释执行。完整程序开发底层运行逻辑:源代码→Python解释器翻译为字节码→Python虚拟机翻译为机器指令执行,机制类似Java/.NET。(五)案例实战【演示程序】编写Python的第一个程序,要求输出三行数据。演示两种运行方式:IDLE交互式逐行输入、文件式保存后运行,查看输出结果。课堂讨论/实操【教师活动】抛出两个问题引导学生实操验证1.尝试用pip命令查看自己电脑上已经安装的Python库有哪些?2.分别用importmath和frommathimportsqrt两种方式计算16的平方根,观察写法差异。【学生活动】随机选取同学上台演示,指出问题。内容小结Python:简洁、强大、生态全环境:IDLE/Anaconda,交互式+文件式工具:pip+三种导入程序:结构清晰、解释执行开发:命令式、文件式结构:语句、模块、类、函数 作业1.基础作业(必做)在电脑安装Python/Anaconda编写并运行HelloWorld,输出自己姓名2.提升作业(选做)使用importmath计算平方根、圆周率尝试用JupyterNotebook写一段代码课堂组织【教师活动】案例导入,激发兴趣投屏分步演示安装、运行、pip命令重点辨析模块/包/库、导入方式强调规范编码与工程习惯【学生活动】跟随教师完成环境安装亲手写HelloWorld并运行成功使用pip查看、安装库对比两种运行方式差异记录常见报错与解决方法ADDINCNKISM.UserStyle教案首页课序2学时2周次教学内容第2章语言基础——变量、数据类型、运算符基础教学目标知识掌握标识符命名规则;理解变量与对象的关系;熟悉Python动态类型;掌握算术、逻辑、比较运算符。能力能正确命名变量;能使用type()、id()观察变量特性;能构建并计算表达式。素养养成规范命名、严谨编码的职业习惯;树立“无规矩不成方圆”的工程规范意识;培养逻辑思维与程序推理能力。教学重点标识符命名规则;变量赋值与动态类型;逻辑运算符短路特性;算术/比较/逻辑运算符用法。教学难点理解“变量是对象的引用”;逻辑短路求值原理;浮点数精度问题与安全比较。教学方法手段案例驱动+交互式演示+小组讨论+实时编码测试。教学组织方式1.内容导入2.知识点讲解3.随堂练习与常见错误分析4.小结5.作业课后反思对“变量是对象的引用”这一抽象概念理解仍不够深入,需要在后续课程中通过更多图示与实例强化。教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入提问引导:程序如何存储数据、计算数据、输出结果?展示简单计算器代码,引出变量、数据类型、运算符三大核心。明确本节课任务:学会存数据、识类型、做运算。二、内容介绍(一)标识符与命名规则标识符:变量、函数、类、模块的名称。规则:必须以字母或下划线开头;不能以数字开头;区分大小写;不能使用关键字;规范:见名知意、小写下划线命名法。思政融入:规范命名是工程素养,体现严谨与协作。(二)关键字Python保留字,不可用作变量名重点:True、False、None、and、or、not、if、else等演示:给关键字赋值会直接报错(三)变量本质变量=对象的引用(标签/名字)赋值:a=10用id(a)查看内存地址用type(a)查看类型动态类型:变量类型可随时改变多重赋值、链式赋值(四)数据类型基础1.整数类型int(1)定义用于表示整数,没有小数部分。(2)特点长度不受限制(只受内存限制),超大整数不会溢出。支持十进制、二进制(0b)、八进制(0o)、十六进制(0x)。属于不可变类型。(3)示例a=10#十进制b=0b1010#二进制c=0o12#八进制d=0xa#十六进制(4)常用函数int(x):将x转为整数bin(x):转二进制字符串oct(x):转八进制字符串hex(x):转十六进制字符串2.浮点数类型float(1)定义用于表示带小数的实数。(2)特点采用二进制浮点存储,存在精度误差。范围很大但精度有限(约15~17位有效数字)。科学计数法:1.2e3=1200.0(3)重点坑:浮点数精度问题print(0.1+0.2)#输出0.30000000000000004print(0.1+0.2==0.3)#False(绝对不能直接比较)(4)正确比较方式importmathprint(math.isclose(0.1+0.2,0.3))#True(5)常用函数float(x):转为浮点数round(x,n):四舍五入保留n位小数3.布尔类型bool(1)定义表示逻辑真/假,只有两个值:True(真,等价于1)False(假,等价于0)(2)本质bool是int的子类:print(True==1)#Trueprint(False==0)#True(3)布尔判断规则(非常重要)以下值在Python中会被视为假(False):False0、0.0''、""(空字符串)[](空列表){}(空字典)None其他所有值都视为真(True)。(4)示例print(bool(0))#Falseprint(bool(10))#Trueprint(bool(""))#Falseprint(bool("hello"))#True4.三种类型之间的转换#int→floatprint(float(10))#10.0#float→int(直接截断小数,不四舍五入)print(int(3.9))#3#int/bool→互转print(int(True))#1print(bool(0))#False三、可直接粘贴进教案的标准表述(教师口吻)(五)算术运算符+、-、*、/、//、%、**注意:/浮点数除法;//向下取整;整数无大小限制优先级:先乘除后加减(六)比较运算符==、!=、>、<、>=、<=重点内容:链式比较1<2<3等价于1<2and2<3(七)逻辑运算符与and、或or、非not短路求值(惰性求值):and一假即假,左边假则右边不执行;or一真即真,左边真则右边不执行注意:结果不一定是bool,返回实际参与运算的值(八)运算符优先级与结合性优先级:括号→算术→比较→逻辑结合性:多数左结合,**右结合四、内容小结(3分钟)标识符:规则+规范变量:引用、动态类型三大运算符:算术、比较、逻辑难点:逻辑短路、浮点数精度五、布置作业(2分钟)定义变量存储姓名、年龄、身高,输出并打印类型。计算:(20+30)*2/5、not(4>3and5<6),写出步骤。思考:3>2>1的执行原理。课堂组织【教师活动】联系生活场景,讲解标识符与变量、关键字与数据类型、算术、逻辑、比较运算符。【学生活动】跟写代码,尝试定义自己的变量,观察id()输出。尝试给关键字赋值(如and=1)观察报错;练习type()检查不同类型。随堂计算练习:(3+5)*2//4,TrueandFalseorTrue,5>3and2<1。ADDINCNKISM.UserStyle教案首页课序3学时2周次教学内容第2章语言基础——赋值运算、位运算、输入输出、编码规范教学目标知识掌握增强赋值、海象运算符;理解基本位运算含义与用途;掌握input()、print()与格式化输出;4.熟悉PEP8编码规范。能力能使用input()编写交互程序;能使用f-string格式化输出;能按规范编写整洁可读代码;能理解位运算的快速计算用途。素养培养规范编码、良好排版的编程习惯;强化规则意识、团队协作意识;追求简洁高效但不随意的工程思维。教学重点增强赋值运算符;input()与类型转换;print()格式化输出;PEP8缩进、命名、空格规范。教学难点位运算理解与计算;海象运算符:=使用场景;input()字符串转数值类型;print()格式化输出。教学方法手段案例教学+代码演示+代码审查(peerreview)教学组织方式1.内容导入2.知识点讲解3.随堂练习与常见错误分析4.小结5.作业课后反思位运算普遍理解困难,海象运算符:=的使用场景仍较模糊教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入回忆算术运算符,思考简化写法。启发学生追求简洁高效,同时强调“简洁≠随意”,必须符合规范。二、内容介绍(一)赋值运算符讲解增强赋值(+=,-=,*=,/=,//=,%=,**=),强调x/=2会使x变为浮点数;海象运算符:=示例:while(line:=input())!='quit':;多元赋值交换变量。(二)位运算符讲解&,|,^,~,<<,>>规则;演示2&3二进制计算;应用:权限控制、快速乘除2。(三)表达式优先级给出优先级表(**
→算术→比较→逻辑→赋值);示例3+5*2>10andnotFalse逐步拆解;建议使用括号明确优先级。(四)输入输出input()返回字符串,需进行类型转换,使用eval、int、float内置函数进行数据类型转化等。强调eval的便捷性和安全隐患。print()参数:sep、end、
file。格式化输出:%格式化、format()方法、f-string(推荐)。演示print(f"总和是{sum:.2f}")。(五)编码规范(PEP8)缩进:4个空格,不要混用Tab。行长不超过79字符。命名:变量/函数小写+下划线,常量全大写,类驼峰。空格:运算符两侧加空格,逗号后加空格。注释:#后加空格,文档字符串"""。展示一段不规范代码,让学生共同改进。(六)案例实战存款计算器:输入本金、年利率、期限,计算本息和本金*(1+利率)**期限,输出格式化结果。三角形判断:输入三边,判断是否任意两边之和大于第三边,输出结果。强调输入验证和异常处理(预留第3章内容)。三、内容小结
总结增强赋值、位运算、输入输出、编码规范。四、作业1.编写一个程序,输入一个十进制数,输出其二进制、八进制、十六进制表示。2.将作业1的代码按照PEP8规范格式化,并添加必要注释。课堂组织【教师活动】展示一段混乱代码,让学生按PEP8优化演示输入输出格式化【学生活动】【学生活动】编写代码使用增强赋值累加;尝试海象运算符判断输入。计算5|2,
4<<1,
8>>2,并手工转换二进制验证。随堂计算练习:编写程序:输入两个整数,输出它们的和、差、积、商(保留2位小数),尝试三种格式化方式。ADDINCNKISM.UserStyle教案首页课序4学时2周次教学内容第3章程序流程控制---条件表达式、选择结构教学目标知识理解Python中真假值的等价规则;掌握三种选择结构的语法与执行流程;熟悉match-case结构。能力能根据实际问题设计分支逻辑;能使用选择结构处理多条件判断。素养培养严谨的逻辑判断能力,避免条件覆盖不全。通过多重条件判断,引导学生树立全面、辩证看问题的思维方式。教学重点条件表达式的构造、多分支结构、match-case、选择的嵌套教学难点条件表达式的惰性求值;match-case中的模式匹配(序列、映射、通配符)、选择嵌套教学方法手段多媒体+代码演示教学组织方式1.内容导入2.知识点讲解3.综合案例与纠错4.小结5.作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入展示一个简单的登录判断场景:输入用户名密码,如果正确则登录成功,否则提示错误。引导学生思考如何用编程实现“判断”。二、内容介绍(一)条件表达式详解讲解等价False的值(None,0,0.0,[],(),{},"",
range(0)等);演示if[]:不执行,if[0]:执行;强调不能使用=作为条件,必须使用==。(二)if单分支与双分支单分支语法if:,示例判断年龄是否成年。双分支if-else,示例判断奇偶性。三元运算符:值1if条件else值2,示例max=aifa>belseb。强调冒号和缩进。(三)多分支if-elif-else强调elif是elseif的缩写。案例:百分制转五级制(优、良、中、及格、不及格)。展示常见错误:条件顺序不合理(如先判断score>=60再判断>=90导致永远无法得到“优”)。示例:计算运费折扣(里程区间),演示多个条件的组织。(四)match-case结构Python3.10新特性,适用于多个值匹配。语法:match变量:后跟多个case模式:。示例:根据用户输入的操作符执行计算。通配符_表示其他所有情况。模式可以组合:caseint()|float():;可以匹配序列:case[x,y]:。(五)综合案例与纠错展示一个错误的分支程序(例如判断三角形形状:普通、等腰、等边,但缺少对两边之和大于第三边的判断),让学生找出问题并改正。三、内容小结
总结选择结构的三种形式及match-case语句。四、作业题目:1.编写程序:输入年份,判断是否为闰年(能被4整除但不能被100整除,或能被400整除)。课堂组织【教师活动】讨论生活中“判断”的例子,引出选择结构。【学生活动】编写程序:输入一个整数,输出它是正数、负数还是零(用if-else嵌套实现)。随堂计算练习:编写一个简单的命令行计算器,使用match-case选择运算,尝试用_处理未知操作符。ADDINCNKISM.UserStyle教案首页课序5学时2周次教学内容第3章程序流程控制——循环结构与异常处理教学目标知识掌握for和while循环的语法与适用场景;理解break/continue的区别;掌握异常处理结构;了解断言。能力能使用循环解决重复任务;能处理运行时异常,编写健壮程序。素养培养穷举思维和防御式编程意识。通过循环的“反复迭代”类比马克思主义认识论中“实践-认识-再实践”的螺旋上升;异常处理培养风险防控意识教学重点for与range();while循环条件控制;try-except捕获指定异常。教学难点循环嵌套(如打印素数、九九乘法表);异常处理中的finally子句;break与else的配合。教学方法手段多媒体+代码演示教学组织方式1.内容导入2.知识点讲解3.案例实战4.小结5.作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入提问“如果让你计算1加到100,你会写100行加法吗?”引出循环的必要性;展示一个累加器程序。二、内容介绍(一)for循环与rangefor语法:for变量in可迭代对象:range()三种形式:range(stop),
range(start,stop),
range(start,stop,step)。遍历字符串、列表示例。演示for-else:当循环正常结束(非break)时执行else块。(二)while循环while语法,强调循环变量初始化及更新,避免死循环。示例:猜数字游戏(随机数,不断输入直到猜中)。比较for和while:知道循环次数用for,未知用while。演示while-else。(三)break/continue与else子句break:提前终止整个循环。continue:跳过本次循环剩余语句,进入下一次迭代。演示:输出100以内素数,使用break提前结束内循环。强调:过多使用会降低可读性。(四)异常处理结构异常和错误联系,异常不处理会导致程序被Python解释器终止,为了提高程序的健壮性,必须要进行异常处理。常见标准异常:ZeroDivisionError,ValueError,TypeError,IndexError,FileNotFoundError。强调异常处理三部曲:产生异常、捕获异常、处理异常。try-except基本结构:捕获多个异常:except(TypeError,ValueError):else子句(无异常时执行),finally子句(始终执行,资源释放)。强调多个异常的处理顺序,由前到后逐一检查,匹配上就不再看后面的except子句。为了防止有遗漏的异常,最后一个except子句要写上异常的基类Exception。assert断言:assert条件,"错误信息"。条件不成立,出发AssertionError异常,同时显示“错误信息”。演示:除法程序,处理除零和输入非数字。(五)案例实战输出100以内素数,每行10个(双重循环+缩进对齐)。鸡兔同笼:输入总头数和总腿数,输出鸡和兔各多少只,无解提示。要求使用异常处理输入错误。教师演示如何用PythonTutor可视化循环嵌套过程。三、内容小结
总结循环结构、控制语句、异常处理。四、作业题目:编写程序打印九九乘法表(使用for嵌套)。课堂组织【教师活动】循环的“重复”体现量变到质变,联系“水滴石穿”“久久为功”的奋斗精神。【学生活动】编写程序:编写循环:输出1到100的偶数;求1到100的和;遍历字符串中的每个字符并输出。ADDINCNKISM.UserStyle教案首页课序6学时2周次教学内容第4章(数值类型)教学目标知识掌握Python四种数值类型:整数int、浮点数float、布尔bool、复数complex的基本概念;理解不同数值类型的表示形式、取值特点、书写规范;掌握布尔类型的真假判定规则,了解复数的基本结构;理解不同数值类型之间的简单区别与使用场景。能力能够正确定义、赋值四种数值类型变量;能够判断数据所属数值类型,具备基础数据分辨能力;能够结合案例完成简单数值定义、输出。素养培养学生严谨的数据思维,规范代码书写习惯;养成区分数据类型、合理选用数据类型的编程思维;培养学生自主探究、动手实操、逻辑分析的综合素养。教学重点整数、浮点数、布尔类型的语法格式与使用方法;布尔类型True、False的逻辑含义;四种数值类型的直观区分方式。教学难点浮点数存储精度问题以及书写规范;布尔类型的本质(1和0)理解;复数结构(实部、虚部)的理解与简单使用。教学方法手段讲授法、案例演示法、对比分析法。教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入展示生活常见数据:人数、身高、对错判断、数学虚数。在编程中,不同的数据为什么要分类?人数、身高、逻辑判断能否用同一种数据存储?引出本节课知识点:Python内置四种基础数值类型,分别为整数、浮点数、布尔、复数。二、知识讲解(一)整数类型int1.概念讲解整数int是不带小数的数字,包含正整数、负整数、零,可以使用二进制、八进制、十六进制和十进制来表示int。Python整数长度无限制,可写超大整数。为了提高可视性,可以使用下环线三位三位分割大整数。代码演示:定义整数变量,使用type()查看数据类型。举例:人数、年龄、编号、个数。#1.定义:人数(整数)people_num=45print("人数:",people_num)print("数据类型:",type(people_num))#查看类型print("-"*30)#2.定义:年龄(整数)age=20print("年龄:",age)print("数据类型:",type(age))print("-"*30)#3.定义:编号(整数)stu_id=2025001print("学号:",stu_id)print("数据类型:",type(stu_id))print("-"*30)#4.定义:个数(整数)count=100print("物品个数:",count)print("数据类型:",type(count))(2)浮点数类型float(7分钟)1.概念讲解float表示带有小数点的数字,用于表示小数、高精度数据。浮点数和整数运算时,整数会自动转换为小数。重点提示:浮点数存在精度误差,不能直接比较两个小数是否相等,需要使用math.isclose(),不适合极高精度运算。2.代码演示num1=3.14159num2=2.6789num3=5.024#1.四舍五入保留2位小数res1=round(num1,2)res2=round(num2,2)#2.四舍五入保留1位小数res3=round(num3,1)#3.不指定小数位数,直接取整数res4=round(3.56)应用场景身高、体重、温度、金额。(三)布尔类型bool(6分钟)1.概念讲解布尔类型只有两个值:True(真)、False(假)。布尔本质为特殊整数,True=1,False=0。代码演示x=20y=15res1=x>yres2=x<yres3=x==y应用场景条件判断、开关状态、对错判定。(四)复数类型complex1.概念讲解复数由实部+虚部组成,格式:a+bj。Python中虚部后缀为j,不是数学i,j要放到数字的后面去。演示代码:定义复数,查看实部、虚部。#1.定义复数格式:实部+虚部jc1=3+5jc2=2.5-4jc3=-6j#实部为0的复数#2.读取实部、虚部print("c1实部:",c1.real)print("c1虚部:",c1.imag)print("-"*30)应用场景:电路分析、数学建模、信号处理。(5)互动设计•给出综合案例代码,一次性定义四种数值类型。•课堂提问:判断每一个变量属于哪一种数据类型。•随机抽查学生回答,纠正易错点(布尔大小写、复数j)。•统一演示运行结果,总结判定技巧。三、课堂小结(3分钟)快速总结四类数值:int整数、float小数、bool真假、complex复数。提炼易错点:布尔首字母大写、复数j表示、浮点数精度问题。强调使用原则:根据业务场景合理选择数据类型。四、布置作业1.基础作业:分别定义int、float、bool、complex四种变量,使用type()输出类型。2.思考题:True和False参与数学运算结果是什么?为什么?3.预习作业:预习数据类型转换方法。课堂组织【教师活动】情景导入、问题提出、知识点讲授【学生活动】思考生活中不同数据的特点,区分整数、小数、逻辑值。跟随教师思路,明确本节课学习任务。学生活动对比整数与浮点数区别,记录小数点为判定核心。实操定义浮点型变量,观察输出格式。ADDINCNKISM.UserStyle教案首页课序7学时2周次教学内容第4章数值和字符串(字符串)教学目标知识掌握字符串的概念、三种定义格式,理解字符串属于不可变序列特性;理解字符编码原理,掌握字符串编码(encode)和解码(decode)过程;熟练掌握字符串切片、拼接、遍历等常见操作及常用内置方法;了解字符串常量的含义,掌握string模块常用常量。能力能够区分不同引号使用场景;能够完成字符串编码、解码转换,解决中文乱码问题;能够利用切片、内置方法完成字符串查找、替换、分割、大小写转换;能够合理使用字符串常量完成字符筛选、数据形态的判断。素养培养学生字符存储逻辑思维,理解计算机底层编码规则;培养规范代码书写习惯,养成严谨的数据处理思维。教学重点字符串三种定义方式、引号使用规则;字符串切片语法、字符串常用内置方法;编码(encode)、解码(decode)转换逻辑。教学难点字符串不可变特性的理解;编码格式(UTF-8、GBK)区别,乱码产生原因;切片语法中正索引、负索引的取值逻辑。教学方法手段讲授法、案例演示法、对比教学法、任务驱动法。教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入计算机如何存储中文?为什么有时候文字会出现乱码?引出本节课四大知识点:字符串定义、编码解码、常用操作、字符串常量。说明字符串是使用频率最高的数据类型,广泛用于办公、爬虫、数据分析。二、知识讲解(一)字符串定义1.概念讲解字符串是由字符组成的有序、不可变序列,用于存储文本信息。讲解三种定义格式:单引号、双引号、三引号(多行字符串)。单双引号无区别,三引号保留换行格式。重点强调:字符串不可变,不能直接修改某一个字符。代码演示(二)字符串编码与解码1.概念讲解计算机只能存储二进制,文字必须编码转为二进制;二进制还原文字为解码。常用编码格式:UTF-8(通用)、GBK(中文)。语法讲解:编码encode()、解码decode()。乱码原因:编码格式与解码格式不一致。代码演示演示中文编码、解码过程,展示乱码案例。(三)字符串常见操作和方法1.概念讲解基础操作:字符串拼接、重复、索引访问、切片操作。切片重难点:正索引从0开始,负索引从末尾开始。常用内置方法:长度len()、大小写转换、替换replace()、分割split()、去除空格strip()。2.代码演示print("c1实部:",c1.real)(四)字符串常量(5分钟)1.概念讲解string模块内置固定不变的字符集合,称为字符串常量。常用常量:大小写字母、数字、标点符号。应用场景:验证码生成、字符过滤、数据筛选。2.代码演示s1='python's2="编程"s3="""多行文本"""#二、编码解码str1="中文测试"b=str1.encode("utf-8")#编码s=b.decode("utf-8")#解码#三、常用操作s="HelloPython"print(len(s))#长度print(s.strip())#去除空格print(s.upper())#大写print(s.lower())#小写print(s[2:6])#切片#四、字符串常量importstringprint(string.ascii_letters)print(string.digits)(五)综合案例设计综合案例:输入个人信息,完成字符串截取、大小写转换、去除空格、编码保存。课堂提问:切片截取第2到第5个字符、判断编码格式。随机抽查学生回答切片索引取值,纠正负索引易错点。统一运行案例代码,梳理全部知识点。三、课堂小结总结四大知识点:三种定义、编码解码、切片与常用方法、字符串常量。提炼易错点:字符串不可变、切片左闭右开、编码格式统一防乱码。梳理应用场景:文本处理、信息提取、数据清洗。四、布置作业布置作业基础作业:分别使用单、双、三引号定义字符串,完成编码、解码操作。实操作业:给定字符串,完成切片、大小写转换、去除空格、替换字符。思考题:为什么字符串不能直接修改单个字符?乱码如何解决?预习作业:预习字符串格式化输出。课堂组织【教师活动】生活导入、问题提出、知识点讲授【学生活动】思考生活中的文本数据,感受字符串应用场景。带着乱码疑问进入本节课学习,明确学习目标。【教师活动】重难点知识代码演示【学生活动】牢记切片语法:字符串[起始:结束:步长]。抄写常用方法,区分不同函数功能。ADDINCNKISM.UserStyle教案首页课序8学时2周次教学内容第5章容器类型---列表、元组教学目标知识理解序列结构的特点,掌握列表的构造、增加元素、删除元素、排序和反转等方法,能够合理编写切片操作,学会列表推导式的编写,理解列表的赋值、浅复制和深复制的特点。学会元组的定义、元素的访问方法,掌握生成器表达式的编写。能力能根据实际问题合理使用列表推导式、生成器表达式、切片、列表和元组的方法,能够区分列表和元组的不同,根据程序需要合理选择列表和元组。素养树立精益求精的工匠精神和严谨求实的职业素养。教学重点列表和元组的定义、切片、列表推导式、生成器表达式、三种复制方式、列表元素的增加和删除,列表的排序和反转教学难点切片、深复制和浅复制、原地操作、列表的自动扩展和收缩、列表推导式、列表的排序教学方法手段多媒体+项目式教学教学组织方式1.内容导入2.知识点讲解3.综合案例与纠错4.小结5.作业课后反思加强以下内容的演示:切片、负数索引、append()、extend()、insert()、remove()、pop()等方法,嵌套列表的多层下标访问,列表赋值。教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入学生期末成绩管理:成绩录入、存储、排序、计算平均分、最高分、最低分。二、内容介绍(一)序列结构一组有序数据的容器,类似于C语言的数组。包括列表、元组和字符串。序列元素的访问使用整数下标,可以采用正向索引(0~元素个数-1)、也可以采用反向索引(-1~-元素个数)。(二)列表的定义使用[]作为界定符,元素之间使用,分割,也可以使用list()函数,将一个可迭代对象转换为列表。(三)列表的复制直接赋值会创建一个新列表,新列表指向源列表。修改一个列表会影响到另一个列表。浅复制copy()区分不同情况,如果修改的是不可变数据类型,如数值型、字符串、元组等,不影响另一个列表;如果修改的是可变数据类型,并且使用该数据类型提供的方法,那么就会影响另一个。深复制copy.deepcopy()修改一个不会影响另一个,因为复制的是实际值,不是引用。示例:a=[1,2,3,"welcome",["C","Java","PHP"]],分别使用三种复制方式进行演示,并提供内存指向展示。(四)列表元素的增加和删除1.元素增加append(x)增加一个对象x,可以是任意数据类型,将对象x作为一个整体增加到列表末尾;extend(x)增加一个对象x,将一个对象x中的所有元素增加到列表末尾;insert(index,x)在任意位置index处增加一个对象x。不建议在列表非尾部位置增加元素,会导致数据的大量移动,效率较低。元素的删除remove(x)删除首次出现的x,要删除所有就需要使用循环,但是使用不当会导致删除不全,原因就是列表的自动收缩机制造成的。要删除所有的x,需要从后往前进行删除,或者使用切边,或者使用while循环。pop()方法删除并返回指定位置(默认为最后一个)上的元素,如果给定的下标超出了列表的范围则抛出异常。使用del命令删除指定位置的元素。板书分析以下程序问题:x=[1,2,1,2,1,1,1]foriinx: ifi==1: x.remove(i)print(x) #结果为[2,2,1](五)列表的排序和反转sorted()函数排序后会生成新列表,原列表不会改变。sort()方法用于按照指定的规则对列表中所有元素进行原地排序,该操作会改变原来列表元素的顺序。reverse()方法用于将列表所有元素反转,该方法属于原地操作,原列表会发生变化。关注sort方法和sorted函数的reverse参数和key参数,一个指定排序方法,默认升序,reverse=True时,采用降序,key一般是函数,指定排序依据。a=list(range(8,20)) #创建列表b=sorted(a,reverse=True) #降序a.sort(key=str) #排序依据的是字符串编码的大小(五)切片切片语法:“序列名[start:end:step]”,返回序列的一个片段。第1个参数start表示切片的开始位置,当step为正整数时,start默认为0;第2个参数end表示切片的截止(不包含)位置,当step为正整数时,end默认为列表的长度;第3个参数step表示切片的步长,默认为1。当step为正整数时,表示正向切片。start为0时可以省略,当end为列表长度时可以省略,当step为1时可以省略,省略步长时,还可以同时省略最后一个冒号。当step为负整数时,表示反向切片。这时start位置应该在end位置的右侧,否则会返回空列表。start默认为-1,end默认为列表第1个元素前面的位置(-len(list_name)-1)。其中start和end表示序列元素的索引号。切片作用:获取列表的部分元素,修改/增加列表元素numbers=[1,2,3,4,5,6,7,8]slice1=numbers[2:-3] ;slice2=numbers[0:7:-1];num=[1,2,3,4,5];num[len(num):]=[6,7,8];num[:3]=[](6)列表推导式列表推导式允许用一行代码对一个可迭代对象(如列表、元组、集合等)中的每个元素进行操作,并生成一个新的列表。列表推导式的语法非常简洁,可以替代很多使用for循环的场景,使代码更加可读和优雅。列表推导式语法形式为:[表达式for变量1in可迭代对象1if条件表达式1for变量2in可迭代对象2if条件表达式2for变量3in可迭代对象3if条件表达式3...]a=[1,2,3]b=[4,5,6]c=[x*yforxinaforyinb] print(c) (7)列表成员测试、比较和统计使用in/notin运算符可以判断一个元素是否在列表中。关系运算符(<、>、==、!=、<=、>=)可以用来对列表进行比较。先比较两个列表的第1个元素,如果两个元素相同,则继续比较后面两个元素;如果两个元素不同,则返回两个元素的比较结果;重复这个过程,直到有不同元素或者比较完所有元素为止。列表对象的count()方法用来统计指定元素在列表中出现的次数。元组定义和删除元组(tuple)属于有序序列,支持使用双向索引访问其中的元素。元组属于不可变(immutable)序列,不可以直接修改元组中元素的值。将元组的元素放置在一对圆括号“()”内,以逗号分隔,赋值给变量,即可创建元组。也可以使用tuple()函数将列表、元组、range对象、字符串或其它类型的可迭代对象转换为元组。当不再使用时,使用del命令删除整个元组。元组方法使用下标访问元组的元素,支持两个方法count()和index(),提供in和notin运算符来判断元素是否在元组中,提供切片操作,使用len()计算元组的大小等。生成器表达式与列表推导式最大的不同是,生成器推导式的结果是一个生成器对象。生成器对象类似于迭代器对象,具有惰性求值的特点,不会一次性将所有值存储在内存中,而是按需生成值。它在处理大数据时,可以节省内存,同时保持代码的简洁性和可读性。使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象的__next__()方法或者内置函数next()进行遍历,或者使用for循环来遍历其中的元素。当所有元素访问结束以后,如果需要重新访问其中的元素,则必须重新创建该生成器对象。g=((i+2)**2foriinrange(5)) #创建生成器对象,print(g) gList=list(g) #将生成器对象转换为列表print(gList) #输出:[4,9,16,25,36,49,64,81,100,121]三、内容小结
总结列表和元组的特点、使用场合、系统提供的方法。四、作业1.编写一个Python程序,实现以下功能:创建一个整数列表,包含5个元素;将列表中的每个整数转换为对应的八进制形式,并打印转换后的八进制字符串。2.有一个包含若干整数的列表numbers=[3,5,1,4,2],使用列表推导式生成一个新列表,其中包含numbers中每个元素的平方,完成numbers列表的排序打印,反转numbers列表,并打印反转后的结果。课堂组织【教师活动】结合列表定义、增加和删除元素、排序等易错点进行案例设计和板书推导【学生活动】编写程序:输入一组学生成绩,按照从高到低进行排序。随堂练习:设计10道关于列表和元组的测试题,要求学生进行线上测试,针对出现的错误,进行详细分析和讲解ADDINCNKISM.UserStyle教案首页课序9学时2周次教学内容第5章容器类型——字典、集合、元组封装与序列拆封教学目标知识理解字典和集合的哈希特性,掌握字典的定义、元素增加、修改和删除,掌握集合定义、元素增加、删除和集合的交集、并集、差集以及对称差集。理解元组的封装和序列的拆封。能力能够正确定义和使用字典提供的方法来编程,学会集合的定义和方法的使用,能够合理选择字典和集合来存储数据。素养培养精益求精的工匠精神和科学家的探索精神教学重点字典定义、字典元素增加、修改和删除,字典的排序;集合定义、集合元素增加、删除,多元赋值和多重赋值教学难点字典键键值对的内涵、字典元素的访问、增加和修改,集合的运算教学方法手段讲授法+案例教学+讨论法+启发式教学教学组织方式1.内容导入2.知识点讲解3.案例实战、测试4.小结5.作业课后反思嵌套字典访问、多层取值、字典与集合的底层逻辑(哈希表)过于抽象,需要进一步演示。对字典vs列表vs集合三者的适用场景对比讲解不足,学生在实际问题中不知道该选哪种结构;教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入单位做了一个工资表格,要实现数据的存储。二、内容介绍(一)字典概述字典(dictionary)是包含若干“键:值”元素的无序可变容器对象,字典中的每个元素包含用冒号分隔开的“键”和“值”两部分,表示一种映射或对应关系,不同元素之间用逗号分隔,所有的元素放在一对大括号{}中。字典中元素的“键”可以是Python中任意不可变数据,例如整数、实数、复数、字符串、元组等类型等可哈希数据,但不能使用列表、集合、字典或其他可变类型对象作为字典的“键”。字典中的“键”不允许重复,“值”可以重复。字典创建和删除使用“=”将一个字典赋值给一个变量即可创建一个字典变量data={'国家':['富强','民主','文明','和谐'],'社会':['自由','平等','公正','法治‘],'公民':['爱国','敬业','诚信','友善']}使用内置类dict以不同形式创建字典keys=['a','b','c','d']values=[1,2,3,4]d=dict(zip(keys,values))#根据已有数据创建字典d=dict(name='Dong',age=39)#以关键参数的形式创建字典字典元素访问dict[键]:以“键”作为下标可以访问对应的“值”,若“键”不存在则抛出异常。get():dict.get(self,key,default=None,/)获取指定“键”对应的“值”,并且可以在“键”不存在的时候返回指定值。keys():dict.keys()返回字典的“键”。values():dict.values()返回字典的“值”。items(): dict.items()返回字典的“键”、“值”对。(四)字典元素添加、修改与删除若指定的“键”存在,表示修改该“键”对应的值;若指定的“键”不存在,表示添加一个新的“键:值”对。使用update()方法可以将另一个字典的“键:值”元素一次性全部添加到当前字典对象中,如果两个字典中存在相同的“键”,则以另一个字典中的“值”为准。aDict={'age':35,'name':'Dong','sex':'male'}aDict['age']=39#修改元素值aDict['address']='SDIBT'#添加新元素aDict.update({'a':97,'age':39})删除字典中指定的元素,可以使用del命令使用字典对象的pop()和popitem()方法删除元素(五)字典元素的排序字典是可以按照“键”或者“值”来进行排序。ddict={"a":10,"c":1,"b":100}#items()将字典的元素转换成了包含键值对元组的对象sorted(ddict.items(),key=lambdaitem:item[1]) sorted(ddict.items(),key=lambdaitem:item[0]) (六)集合特点集合(set)属于Python无序可变容器对象,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不重复。集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据。集合对象的创建与删除直接将集合字面值赋值给变量即可创建一个集合对象。a={3,5} #创建集合对象a_set=set(range(8,14)) #把range对象转换为集合b_set=set([0,1,2,3,0,1,2,3,7,8]) #转换时自动去掉重复元素集合操作与运算集合元素增加与删除集合的add()方法可以增加新元素,如果该元素已存在则忽略该操作,不会抛出异常。update()方法用于合并另外一个或多个集合中的元素到当前集合中,并去除重复元素。pop()方法用于随机删除并返回集合中的一个元素,如果集合为空则抛出异常;remove()方法用于删除集合中的元素,如果指定元素不存在则抛出异常;discard()用于从集合中删除一个特定元素,如果元素不在集合中则忽略该操作;clear()方法清空集合删除所有元素。集合运算a_set=set([8,9,10,11,12,13])>>>b_set={0,1,2,3,7,8}>>>a_set|b_set#并集{0,1,2,3,7,8,9,10,11,12,13}>>>a_set&b_set#交集{8}>>>a_set-b_set #差集{9,10,11,12,13}>>>a_set^b_set#对称差集{0,1,2,3,7,9,10,11,12,13}元组封装与序列拆封元组的封装指的是将多个值自动封装到一个元组中。元组封装的可逆操作称为序列的拆封/解包,用来将一个封装起来的序列自动拆分成若干个基本数据,可以使用序列拆封功能对多个变量同时进行赋值。>>>t="a","b","c">>>t('a','b','c')>>>a,b,c=t>>>x,y,z=map(str,range(3))#使用可迭代的map对象进行序列解包>>>x,y,z('0','1','2')内容小结作业给定一个字典person={'name':'Alice','age':25,'city':'NewYork'},创建一个元组,包含person字典中的所有值。修改person字典,将'city'的值改为'LosAngeles',使用get方法从person字典中获取'age'的值,并打印。2.有一组数据,包含重复的元素:data=[1,2,2,3,4,4,5,5,5]。去除data中的所有重复元素,并打印去重后的集合。检查元素3是否在去重后的集合中,并打印结果。创建一个包含两个元素的集合{6,7},计算与去重后的集合的并集,并打印结果课堂组织【教师活动】板书字典排序过程;板书集合运算过程;发布知识点测试题;讲解错误试题。【学生活动】编写程序:输入员工姓名和工资,按照工资逆序排列;完成课堂测试题。ADDINCNKISM.UserStyle教案首页课序10学时2周次教学内容第6章函数---函数定义、函数调用和返回值、函数参数、lambda表达式教学目标知识理解函数的作用,掌握函数的定义,掌握函数的调用方法,理解函数返回值的意义,掌握位置参数、默认值参数、可变长度参数、关键字参数的定义,理解形参和实参的含义以及传递规则,掌握lambda表达式的使用场合和编写规则。能力能够正确定义函数名、函数参数、函数体和函数返回值,能够根据不同需求,正确选择位置、默认值、可变长度、关键字参数并灵活使用,学会lambda表达式的编写素养树立知行合一、科技报国的价值导向,培养守正创新、刚柔并济的意识教学重点函数定义和函数调用、函数形参和实参、函数的参数类型、lambda表达式教学难点形参和实参传递规则、函数参数类型教学方法手段讲述法+案例式教学+讨论法教学组织方式1.内容导入2.知识点讲解3.综合案例与纠错4.小结5.作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入有一个学生期末成绩管理系统,完成对45个学生成绩的求和和排序工作,现在需要对50个学生成绩进行求和和排序,如何做?100个呢?二、内容介绍(一)函数定义函数(function)是指一个有命名的、执行具体功能的语句序列。在定义函数的时候,需要指定函数的名字和语句序列。Python语言中函数的声明和定义合为一体,函数的定义方法如下:def函数名([形参列表]): #[]表示可有可无语句序列 #函数要完成功能的实现[return表达式] #函数的返回值,可以没有注意:函数的规范命名。Python解释器并不对参数类型进行检查,建议先对函数参数进行合法性检查,然后再编写正常的功能代码。(二)函数调用和返回值形参:“形式参数”(简称形参),起到占位的作用。实参:函数调用时,函数名后面括号中的参数称为“实际参数”(简称实参),函数调用时,实参传递给形参,这是一个单向传递。传值:函数调用时,实参的值复制一份给形参,形参和实参是两个独立的内存单元,修改形参不会影响实参。如果实参是整数、实数、复数等基本类型,或者是元组、字符串这样的不可变类型的数据,那么采用传值方式。传地址:函数调用时,实参的内存首地址传递给形参,形参和实参指向同一块内存地址,修改形参会影响实参。如果实参是可变序列(列表、字典、集合等),并且在函数内部使用下标或可变序列自身的方法增加、删除或修改形参元素,那么采用传地址方式。函数的返回值:函数的返回值类型和return语句返回的表达式类型一致。如果函数没有return语句,或者有return语句但是没有执行到,或者执行了不返回任何值的return语句,解释器都会认为该函数返回空值None。函数可以返回一个或者多个值,返回值是多个时,会自动打包成元组的形式返回。(三)函数参数位置参数(positionalargument)最常用的形式,调用函数时实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同。defget_menu(food,cigarette,wine): print("主食:",food,"香烟:",cigarette,"白酒:",wine)#实参“面条、红塔山、郎酒”依次传递给形参food、cigarette和wineget_menu("面条","红塔山","郎酒") 默认值参数(defaultargument)指在函数定义时为某个参数指定的一个默认值。如果在调用该函数时没有为该参数提供具体的值,那么这个参数就会自动采用其默认值。定义带有默认值参数的函数时,任何一个默认值参数右边都不能再出现位置参数。默认值参数是在函数定义时确定值的,只会被初始化一次。因此,对于列表、字典这样可变类型的默认值参数,可能会导致逻辑错误。defget_default(arg,result=[]): #result为默认值参数 result.append(arg) #为默认值参数添加元素 print(result)get_default(3,[1,2]) #输出:[1,2,3]get_default(3) #参数result使用默认值[]。输出:[3]get_default(4) #参数result已初始化过了,输出:[3,4]关键字参数(keyword-onlyargument)在函数调用时通过关键字(即形参名称)来指定参数值的方式,参数的顺序变得不再重要,只需确保形参名称正确即可。该参数是指调用函数时的参数传递方式,与函数的定义无关。可以同时使用位置参数和关键字参数,要确保位置参数出现在关键字参数的前面。可变长度参数在函数定义时可以使用个数不确定的参数,同一个函数可以使用不同个数的参数来调用。这使得函数更加通用,适用于多种情况。可变长度参数主要有两种形式:在参数名前加*或**。*用来接收任意数量的位置参数并将其放在一个元组中。**用来接收可变数量的关键参数并将其存放到一个字典中。lambda表达式lambda表达式可以用来声明匿名函数,也就是没有函数名字,临时使用的函数。lambda表达式特点是没有函数名、功能简单、只使用一次,本质上还是函数。lambda表达式使用关键字lambda定义,基本形式为:lambda<函数参数>:<返回值>lambda表达式作为sorted、map、filter和reduce等内置函数的参数。f=lambdax,y,z:max(x,y,z)list_a=[1,2,3,4,5]list(map(lambdax:x+10,list_a))三、内容小结
函数是面向过程编程的基本单位,使用函数可以提高函数的复用性和一致性。定义函数使用def,函数形参没有类型限制,通过return语句将函数的值返回给调用者。函数形参有位置参数、默认值参数和可变长度参数,调用函数时还可以使用关键字参数。要根据实际需要,灵活选择函数参数。Lambda表达式适合使用一次的函数快捷定义。四、作业1.编写函数,判断一个整数是否为素数,并编写主程序调用该函数。2.编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。3.编写函数,模拟内部函数sum()。4.编写函数,模拟内部函数sorted()。课堂组织【教师活动】结合列表定义、增加和删除元素、排序等易错点进行案例设计和板书推导【学生活动】编写程序:输入一组学生成绩,按照从高到低进行排序。随堂练习:设计10道关于列表和元组的测试题,要求学生进行线上测试,针对出现的错误,进行详细分析和讲解ADDINCNKISM.UserStyle教案首页(以2课时为单元)课序11学时2周次教学内容第6章函数——递归函数、生成器函数、内置函数和模块函数、变量作用域教学目标知识掌握递归函数的定义,理解递归函数的缺点,熟悉生成器函数定义和调用,掌握常用内置函数的功能、函数名和参数,掌握random模块中的常用随机数函数,熟悉math模块中的常用函数,理解全局和局部变量作用域。能力能够正确编写递归函数,能够编写基本的生成器函数,学会常见类型转换函数、排序函数、反转函数、映射函数、过滤函数、枚举函数的使用,能够正确调用math和random标准库的常见函数,能够根据实际情况,合理使用局部和全局变量素养理解局部与整体之间的辩证关系,培养大局意识教学重点递归函数、局部变量和全局变量、random模块中的随机数函数、常用内置函数教学难点递归函数、生成器函数、局部和全局变量、随机数函数、map、sorted、filter、enumerate、zip教学方法手段讲授法+案例教学+讨论法+启发式教学教学组织方式1.内容导入2.知识点讲解3.案例实战、测试4.小结5.作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532教学设计一、内容导入求数列11135917...第20项。二、内容介绍(一)递归函数直接或者间接调用自身的函数称为递归函数。递归是一种分而治之的程序设计技术,它将一个复杂规模的问题转换成一个与原问题相似的小规模问题进行求解,给出一个直观、简单的解决方案。递归函数的特点如下:使用选择结构将问题分成不同的情况有一个或多个基本问题(递归结束条件),基本问题可以直接得出结果非基本问题会递归调用自身,每次递归调用会不断接近基本问题,直到变成就基本问题,就可以结束循环每次递归问题的性质不变deff(n):ifnin{1,2}:#基础问题可以直接得出答案returnnelse: #递归条件returnf(n-1)+f(n-2) #递归公式虽然递归程序易于编写,但是递归过程中存在大量的重复运算,这在效率上会有一定的损失。能不用递归方式的时候,尽量使用迭代方式来实现。如果非要用递归方式,可以使用缓存机制来实现。deff2(n):ifnin{1,2}:returnnelse:a,b=1,2 #第1、2项的值foriinrange(3,n+1): #控制第3项后的值计算a,b=b,a+b #迭代公式returnb生成器函数包含yield语句的函数称为生成器函数。生成器函数返回数据时需要使用yield语句,生成器函数可以产生一个迭代器对象,从而实现在需要时生成数据的功能。生成器函数最明显的特征就是在函数内部有一个或者多个yield语句,yield语句不会结束函数的执行,而是返回一个中间的结果给调用者,之后会暂停或挂起后面代码的执行。每次调用生成器函数,它都会返回yield语句后的值,并保存函数的执行状态。下次调用时,函数会从上次yield的位置继续执行,直到遇到下一个yield语句。下次通过生成器对象的__next__()方法、内置函数next()、for循环遍历生成器对象元素等方式显式获取数据时,它会准确地从离开地方继续执行。defmy_range(first=0,last=10,step=1): number=first whilenumber<last: yieldnumber #返回中间值并暂停,下次调用产生新值 number+=stepranger=my_range(1,6)forxinranger: #迭代生成器对象 print(x,end='\t') #输出:12345内置函数函数名说明bin(number)把整数number转换为二进制字符串表示形式float(x)把整数或字符串x转换为浮点数int(x[,d])返回小数(float)、分数(Fraction)或高精度实数(Decimal)x的整数部分,或把d进制的数字字符串x转换为十进制并返回,d默认为十进制hex(number)把整数number转换为十六进制字符串表示形式oct(number)把整数number转换为八进制串字符串表示形式chr(i)返回Unicode码点i对应的字符,0<=i<=0x10fffford(c)返回字符c的Unicode码点str(obj)把对象obj转换为字符串isinstance(obj,type)测试对象obj是否属于指定类型(如果有多个类型,那么就需要放到元组中)type(obj)返回对象obj的类型max(x)、min(x)返回可迭代对象x中的最大值、最小值,要求x中的所有元素之间可以比较大小,允许指定排序规则和x为空时返回的默认值len(obj)返回对象obj包含的元素个数enumerate(iterable)返回包含元素形式为(0,iterable[0]),(1,iterable[1])...的迭代器对象filter(func,seq)返回filter对象,其中包含序列seq中使得单参数函数func返回值为True的那些元素。如果函数func为None则返回包含seq中等价于True的元素的filter对象list(x)、set(x)、tuple(x)、dict(x)把可迭代对象x转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典zip(seq1[,seq2[...]])用于将多个可迭代对象(如列表、元组等)中对应位置的元素打包成一个元组,并返回由这些元组组成的迭代器。最终结果中包含的元素个数取决于所有可迭代对象中最短的那个range([start,]end[,step])返回range对象,其中包含左闭右开区间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理质量监控与缺陷发现
- 上海旅游高等专科学校《Android 移动平台开发》2025-2026学年第一学期期末试卷(B卷)
- 上海政法学院《安全技术》2025-2026学年第一学期期末试卷(B卷)
- 上海戏剧学院《安装工程计量与计价》2025-2026学年第一学期期末试卷(A卷)
- 上海电力大学《AutoCAD 机械制图》2025-2026学年第一学期期末试卷(B卷)
- 护理管理中的质量管理
- 上海现代化工职业学院《安全生产技术与管理》2025-2026学年第一学期期末试卷(B卷)
- 上海现代化工职业学院《AutoCAD 工程制图》2025-2026学年第一学期期末试卷(B卷)
- 新生儿ARDS的护理效果评价
- 护理知识:卡通版教学
- 2026长江财产保险股份有限公司武汉分公司综合部(副)经理招聘1人笔试备考题库及答案解析
- 2026年4月自考10993工程数学(线性代数、概率论与数理统计)试题
- 智能导盲杖毕业设计创新创业计划书2024年
- 八年级下物理实验通知单
- 2024年人教版初中八年级物理(下册)期末试题及答案(各版本)
- 市场营销学(山东大学)智慧树知到期末考试答案章节答案2024年山东大学(威海)
- GB/T 15153.1-2024远动设备及系统第2部分:工作条件第1篇:电源和电磁兼容性
- 结缔组织病相关间质性肺病的肺血管紊乱和抗凝治疗
- 二级公立医院绩效考核三级手术目录(2020版)
- Zippo-2023(中国)产品年册
- 预激综合征护理课件
评论
0/150
提交评论