资源简介 中小学教育资源及组卷应用平台项目八分析历史气温数据———设计批量数据算法第一课时用列表表示和计算平均气温■教材分析“用列表表示和计算平均气温”这一小节,提供用于计算某日平均气温和某月平均气温的数据,引导学生利用Python语言编程求平均气温,学习使用列表存储批量数据的方法。■教学目标1、知识和技能(1)学习使用列表存储批量数据的方法。(2)掌握函数的定义和调用。2、过程与方法让学生在完成活动的过程中掌握批量数据的表示方法及在程序中使用批量数据的方法。3、情感态度与价值观(1)掌握批量数据的表示方法,产生对程序设计的求知欲,形成积极主动地学习态度;(2)通过“自顶而下,逐步求精”的程序设计方法,感受批量处理数据的方法在程序设计中的重要思想。■教学重点:用列表存储批量数据。■教学难点:函数的调用。■教学准备计算机教室,Python,投影机。■教学过程:一.批量数据及其表示和操作在实际的计算机处理问题的过程中,程序要处理的对象大多是大批量的相同数据类型的数据,如一次科学实验中获得的大量实验数据、关键搜索时获得的大量网页中所包含的单词和一个BMP图像中包含的像素点等,它们分别对应大量数值的集合、大量文本的集合和大量像素点对象的集合。程序设计语言支持批量数据的存储,用统一的名称管理一批数据,在内存上的存储空间是连续的。对批量数据中数据项的访问可通过下标。例如,a[I],a[i]。下标的含义是与第一个数据项的偏移量,通常从0开始。例如,Color=["red","gren","blue"],Color[0]的值是"red",Color[1]的值是"gren",Color[2]的值是"blue"。与单变量数据相比,批量数据的优势在于:一批批量数据只需定义一个名称,程序的通用性更强。而一个单变量只可以控制一个数据,使用单变量,程序可控制的数据的个数是固定的。(2)使用方便,可以组织循环控制结构,通过控制下标的值控制一批数据。高级语言都提供了对一批同类型的数据在程序中的表示方法,最常见的是数组。Python语言提供了更加便利的列表类型,其形式更灵活,操作功能更强。Python语言中提供了对列表的一些通用操作,以实现对序列的索引、连接、复制、检测成员等,见下表。Python列表的基本操作操作描述x1+x2连接列表x1和x2,生成新列表xn将列表x复制n次,生成新列表x[i]引用列表x中下标为i的列表成员,i从0开始计数x[i:j]引用列表x中下标从i到j-1的子列表x[i:j:k]引用列表x中下标从i到j-1、间隔为k的子列表len(x)计算列表x中成员的个数max(x)列表x中最大数据项min(x)列表x中最小数据项vinx检测v是否在列表x中,返回布尔值vnotinx检测v是否不在列表x中,返回布尔值Python语言还提供了如下表所示方法,可以执行对列表的操作。表Python列表的方法方法描述list.append(x)把一个数据项添加到列表的结尾,相当于a[len(a):]=[x]list.extend(L)将一个列表中的所有数据项都添加到另一个列表中,相当于a[len(a):]=Llist.insert(i,x)在指定位置插入一个数据项,如a.insert(0,x)会插入到整个列表之前,而a.insert(len(a),x)相当于a.append(x)list.remove(x)删除列表中值为x的第一个数据项;如果没有这样的数据项,就返回Flse二、函数的定义和调用在设计一个大的应用程序时,经常会发生实现类同功能的程序块在程序中多次反复出现的情况。如果单独编写这些程序块,供程序中各部分,甚至各应用程序共享使用,就可以减少编写代码的工作量,而且也便于修改和查看Python语言提供了函数来实现有独立功能的程序块。1.函数的定义构造一个函数的思路与分析数学应用题有些类似,要知道已知什么和求什么。将已知条件放在参数中,在调用时通过参数传递得到,而所的值可通过函数的返回值返回。函数定义的一般格式如下:def函数名(<参数>):函数体函数的定义中一般都包含return语句,return语句的作用是结束函数的执行,返回一个值作为函数的返回值。返回值可以是简单的整型数据、浮点型、文本数据等,也可以是复杂的列表等,还可以没有返回值,仅仅结束函数的执行。在本项目中,getAvg函数的返回值是一个表示数据系列的平均值的浮点值,readNList函数的返回值则是一个存放了一个月的日平均气温值的列表。没有返回值的函数往往是执行一个操作,例如输出12个月的月平均气温的函数不需要返回值。2.函数的调用调用getAvg函数时,需要告诉函数计算哪些数据的平均值,所以需要一个参数来接收数据序列。函数最后返回的是求得的平均值,在调用函数时,还要考虑接收函数的返回值。函数调用的一般形式如下:函数名(<参数值列表>)因为大部分函数是有返回值的,所以调用时常和赋值语句一起使用,由变量引用返回值,其调用形式为:变量名=函数名(<参数值列表>)例如,要计算7!+11!-10!,可以定义一个函数,用于计算n!。要计算n!,必须有一个参数接受n的值,并有一个返回值作为计算结果。定义函数的代码如下:计算7!+11!-10!时,需要调用3次fact函数,调用语句如下:调用函数的方式是十分灵活的,可以单独调用,也可以将它包含在一个表达式中,让函数返回值直接参加表达式运算,还可以将它作为另一个函数调用的参数。例如,本项目模块化设计的算法中,步骤2.2.1和2.2.2可以用一个函数调用完成。函数append的参数是getAvg函数的返回值。三、文本数据的表示和操作1.文本数据的表示计算机中表示文本的最基本单位是字符,包括可打印字符不可打印的控制字符。可打印字符包括:①英文大小写字母a-z和A-Z;②数字字符0-9;③标点符号和一些键盘上的常见符号。控制字符包括回车、制表符、退格等,在程序中要用转义字符表示这些控制字符。Python语言中的转义字符以\为前缀,如下表所示。Python的转义字符转义字符描述转义字符描述\\反斜杠符号\t横向制表符\’单引号\r回车\”双引号\n换行\a响铃\(在行尾时)续行符\b退格(Backspace)\f换页\e转义\oyy八进制数yy代表的字符,如:\o12代表换行\000空\xyy十六进制数yy代表的字符,如:\x0a代表换行字符串是字符的序列表示。字符串常量可以使用单引号、双引号、三引号封装,但前后必须一致。其中单引号、双引号可以表示单行字符串两者作用一致。使用单引号时,双引号可以是字符串的一部分;使用双引号时,单引号可以是字符串的一部分;三引号可以表示单行或多行字符串。举例如下。2.字符串类型数据的基本操作Python语言提供了对字符串类型数据的一些通用操作,如下表所示,以实现对字符串的连接、复制、包含、索引等。Python字符串类型数据的操作符操作符描述x+y连接两个字符串x和yxy复制n次字符串xxins包含判断,判断字符串x是否为字符串s的子串,是则返回true,否则返回falsestr[i]索引操作,返回下标位置的一个字符str[N:M]切片,返回从str[N]到str[M-1]的子串len(x)返回字符串x的长度str(x)返回任意类型x所对应的字符串下面一组操作示例了连接、复制、包含操作符的使用。下例为获取月份英语缩写的程序,输入一个表示月份的整数(1-12),输出对应的月份字符串名称。程序的运行结果如下:要注意的是,可以通过下标访问字符串中的指定字符或子串,但不能改变字符串的内容。举例如下。Python语言还提供了丰富的字符串操作方法,如下表所示(s表示一个字符串对象)。字符串对象的常用方法常用方法描述s.capitalize()返回首字符大写后的字符串,s对象不变s.lower()返回所有字符改小写后的字符串,s对象不变s.upper()返回所有字符改大写后的字符串,s对象不变s.strip()返回删去前后空格后的字符串,s对象不变s.replace(old,new)将s对象中所有的old子串用new子串代替s.count(sub[,start[,end]])计算子串sub在s对象中出现的次数,start和end定义起始位置s.find(sub[,start[,end]])计算子串sub在s对象中首次出现的位置s.join(iterable)将序列对象中所有字符串合并成一个字符串,s对象为连接分隔符s.split(sep=None)将s对象按分隔符sep拆分为字符串列表,默认为空格字符串对象的常用方法示例:四、用列表表示和计算平均气温气象台每日发布的气象数据中,常常会出现最高气温、最低气温和日平均气温。最高气温是一日内气温的最高值,一般出现在14时左右;最低气温是一日内气温的最低值,般出现在凌晨。日平均气温的计算方法不一,可以是最高气温和最低气温的平均值,也可以是一天多次观测值的平均值。而一个月的日平均气温的平均值就是月平均气温。核心概念批量数据:一组数据类型相同的数据对象。数据类型可以是简单类型,也可以是复杂的构造类型。1.计算日平均气温问题:已知气象台某日观测得到的4次气温值为:10℃、13℃、18℃、12℃,求该日的日平均气温。大部分高级语言都提供了对批量数据在程序中进行表示的方法,最常见的是数组。Python语言则提供了更加便利的列表类型,可以应用于一次处理多个数据对象的场合。创建一个列表,存储该日观测得到的气温数据的语句如下:计算平均值就是把一系列数值数据累加后再除以数据的个数。实现这一计算的方法很多,可以通过算术表达式计算,也可以使用内置函数计算。小贴士Python语言中使用列表来表示批量数据。列表用“[]”表示。其中每一项可以是任意数据类型的数据项,各数据项之间用逗号分隔。通过赋值运算可以创建列表:L=[]#创建一个空的列表L内置函数sum的作用是求列表中数值数据的累加和,内置函数len的作用是求列表中数据项的个数。有统计功能的内置函数还有max、min等。方法1:使用算术表达式计算方法2:使用内置函数计算在Python语言的列表中,各数据项顺序排列,并允许按下标访问。下标是一个整数,有效范围从0到列表的长度减1。t_Day[0]表示列表中的第一个数据项,t_Day[i]表示列表的第i+1个数据项。通过访问数据项可以读取、修改数据的数据。2.计算月平均气温问题:已知某市2013年8月的31个日平均气温数据为:34,32,33,33,35,36,36,36,35,34,33,32,32,32,32,31,32,32,30,31,30,30,31,32,29,27,29,31,32,30,26,26,求该市2013年8月的月平均气温。使用Python语言的列表可以存储以上31个气温数据。计算月平均气温,既可以使用内置函数,也可以用循环结构先求得这个月的日平均气温总和再完成计算。访问列表中的每一个数据项时,通常有两种不同的访问方法:下标访问和序列迭代访问。下标访问方法序列迭代访问方法3.使用用户自定义函数计算平均值许多数据分析工具软件都会提供求平均值的系统函数,用来直接计算一组数据的平均值。Python语言没有提供供平均值的内置函数,但可以通过用户自定义函数进行扩求。核心概念:用户自定义函数:由用户自己编写的、能够实现独立功能的语句块。小贴士函数定义的一般形式:def函数名(<参数>):函数体每个函数可以返回一个值,return语句的作用为返回表达式的值。4.读取文件中的数据到列表上问题中的31个日平均气温数据,若要长期存储并反复使用,通常可将其保存在文件中,再通过程序指令来读取文件中的数据。文本文件是存储程序数据的常用文件格式。首先,新建文本文件“201308tq.txt”,将31个日平均气温数据依次输入,每行一个数据。然后,在PythonShell中读取存储在文件“201308tq.txt”中的气温数据到列表L中。Python提供了文件的快速访问方式,可将文本文件中的据按每行一个字符串的形式读入一个列表中,其格式为:列表=list(open(文件名))列表L中得到的是31个包含“\n”的字符串数据,因此要使用int函数逐个将字符串数据转化为整型数据。五、课后作业编写程序,计算文件“201308tq.txt”中存储的31个日平均气温数据的平均值。>>>deffact(n):p=1ifn<0:return-1foriinrange(1,n+1):p=p1returnp>>>result=fact(7)+fact(11)-fact(10)>>>result36293040avgy.append(getAvg(m))2.2.1求列表m的平均值avg:2.2.2将avg追加到列表avgy中。>>>print("I'maprogrammer.")I'maprogrammer.>>>print('Shesaid:"youareright".')Shesaid:"youareright".>>>print('''三引号中可以有'单引号'可以有"双引号"还可以换行''')三引号中可以有'单引号'可以有"双引号"还可以换行>>>s1="hello">>>s2="Python">>>s3=s1+s2>>>print(s3)helloPython>>>s4=3s2>>>print(s4)PythonPythonPython>>>s2ins4true>>>s1ins4falsemonthStr="JanFebMarAprMayJunJulAugSepOctNovDec"monthId=eval(input("请输入月份(1-12):"))pos=(monthId-1)3print(monthStr[pos:pos+3])=============RESTART:C:/sample/getMonthname.py==========请输入月份(1-12):8Aug>>>print(s4[7:13])Python>>>s4[7:13]='Hello'Traceback(mostrecentcalllast):File"",line1,ins4[7:13]='Hello'TypeError:'str'objectdoesnotsupportitemassignment>>>s='hellopython'>>>t=s.strip()>>>s'helloPython'>>>t'helloPython'>>>t.find('he')0>>>s.count('h')2>>>L=t.split()>>>L['hello','Python']>>>t1=",".join(L)>>>t1'hello,Python'>>>t_Day=[10,13,18,12]>>>t_Day=[10,13,18,12]>>>avg=(t_Day[0]+t_Day[1]+t_Day[2]+t_Day[3])/4>>>avg13.25>>>t_Day=[10,13,18,12]>>>avg=sum(t_Day)/len(t-Day)>>>avg13.25>>>t_Day=[34,32,33,33,35,36,36,36,35,34,33,32,32,32,32,31,32,32,30,31,30,30,31,32,29,27,29,31,32,30,26,26]>>>s=0>>>n=0>>>foriinrange(len(t_Day)):s=s+t_Day[i]n=n+1>>>avg=s/n>>>avg31.677419354838708>>>s=0>>>n=0>>>forxint_Day:s=s+xn=n+1>>>avg=s/n>>>avg31.677419354838708>>>defgetAvg(L):returnsum(L)/len(L)>>>avg=getAvg(t_Day)>>>avg31.67741934838708>>>L=list(open("c:\\sample\\201308tq.txt"))>>>>>>L['34\n','32\n','33\n','33\n','35\n','36\n','36\n','36\n','35\n','34\n','33\n','32\n','32\n','32\n','32\n','31\n','32\n','32\n','30\n','31\n','30\n','30\n','31\n','32\n','29\n','27\n','29\n','31\n','32\n','30\n','26\n','26\n']>>>foriinrange(len(L)):L[i]=int(L[i])>>>L[34,32,33,33,35,36,36,36,35,34,33,32,32,32,32,31,32,32,30,31,30,30,31,32,29,27,29,31,32,30,26,26]21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)HYPERLINK"http://21世纪教育网(www.21cnjy.com)"21世纪教育网(www.21cnjy.com)(共59张PPT)第一课时用列表表示和计算平均气温信息技术沪教版必修1项目八分析历史气温数据——设计批量数据算法1234批量数据及其表示和操作函数的定义和调用文本数据的表示和操作用列表表示和计算平均气温目录一.批量数据及其表示和操作批量数据一组数据类型相同的数据对象。数据类型可以是简单类型,也可以是复杂的构造类型。下标对批量数据中数据项的访问可通过下标。例如,a[I],a[i]。下标的含义是与第一个数据项的偏移量,通常从0开始。例如Color=["red","gren","blue"],Color[0]的值是"red",Color[1]的值是"gren",Color[2]的值是"blue"。批量数据的优势(1)一批批量数据只需定义一个名称,程序的通用性更强。而一个单变量只可以控制一个数据,使用单变量,程序可控制的数据的个数是固定的。批量数据的优势(2)使用方便,可以组织循环控制结构,通过控制下标的值控制一批数据。Python列表的基本操作操作描述x1+x2连接列表x1和x2,生成新列表xn将列表x复制n次,生成新列表x[i]引用列表x中下标为i的列表成员,i从0开始计数x[i:j]引用列表x中下标从i到j-1的子列表x[i:j:k]引用列表x中下标从i到j-1、间隔为k的子列表len(x)计算列表x中成员的个数max(x)列表x中最大数据项min(x)列表x中最小数据项vinx检测v是否在列表x中,返回布尔值vnotinx检测v是否不在列表x中,返回布尔值表Python列表的方法方法描述list.append(x)把一个数据项添加到列表的结尾,相当于a[len(a):]=[x]list.extend(L)将一个列表中的所有数据项都添加到另一个列表中,相当于a[len(a):]=Llist.insert(i,x)在指定位置插入一个数据项,如a.insert(0,x)会插入到整个列表之前,而a.insert(len(a),x)相当于a.append(x)list.remove(x)删除列表中值为x的第一个数据项;如果没有这样的数据项,就返回Flse二.函数的定义和调用在设计一个大的应用程序时,经常会发生实现类同功能的程序块在程序中多次反复出现的情况。如果单独编写这些程序块,供程序中各部分,甚至各应用程序共享使用,就可以减少编写代码的工作量,而且也便于修改和查看Python语言提供了函数来实现有独立功能的程序块。函数1.函数的定义2.函数的调用1.函数的定义构造一个函数的思路与分析数学应用题有些类似,要知道已知什么和求什么。将已知条件放在参数中,在调用时通过参数传递得到,而所的值可通过函数的返回值返回。函数定义的一般格式如下:def函数名(<参数>):函数体1.函数的定义函数的定义中一般都包含return语句,return语句的作用是结束函数的执行,返回一个值作为函数的返回值。返回值可以是简单的整型数据、浮点型、文本数据等,也可以是复杂的列表等,还可以没有返回值,仅仅结束函数的执行。1.函数的定义getAvg函数的返回值是一个表示数据系列的平均值的浮点值,readNList函数的返回值则是一个存放了一个月的日平均气温值的列表。没有返回值的函数往往是执行一个操作,例如输出12个月的月平均气温的函数不需要返回值。2.函数的调用调用getAvg函数时,需要告诉函数计算哪些数据的平均值,所以需要一个参数来接收数据序列。函数最后返回的是求得的平均值,在调用函数时,还要考虑接收函数的返回值。函数调用的一般形式如下:函数名(<参数值列表>)2.函数的调用因为大部分函数是有返回值的,所以调用时常和赋值语句一起使用,由变量引用返回值,其调用形式为:函数调用的一般形式如下:变量名=函数名(<参数值列表>)2.函数的调用例如,要计算7!+11!-10!,可以定义一个函数,用于计算n!。要计算n!,必须有一个参数接受n的值,并有一个返回值作为计算结果。2.函数的调用>>>deffact(n):p=1ifn<0:return-1foriinrange(1,n+1):p=p1returnp定义函数的代码>>>result=fact(7)+fact(11)-fact(10)>>>result36293040调用函数的代码2.函数的调用2.函数的调用例如,本项目模块化设计的算法中,步骤2.2.1和2.2.2可以用一个函数调用完成。函数append的参数是getAvg函数的返回值。2.2.1求列表m的平均值avg:2.2.2将avg追加到列表avgy中。avgy.append(getAvg(m))三.文本数据的表示和操作打印字符①英文大小写字母a-z和A-Z;②数字字符0-9;③标点符号和一些键盘上的常见符号。1.文本数据的表示控制字符回车、制表符、退格等。Python的转义字符转义字符描述转义字符描述\反斜杠符号t横向制表符’单引号r回车”双引号n换行a响铃(在行尾时)续行符b退格(Backspace)f换页e转义oyy八进制数yy代表的字符,如:o12代表换行