资源简介 (共49张PPT)分析历史气温数据--设计批量数据算法用列表表示和计算平均气温范欣丽项目八项目学习目标02.了解访问批量数据的常用程序模式01.了解批量数据在程序中的表示方法03.了解定义和使用函数的方法04.了解“自顶向下,逐步求精”的程序设计方法,以及嵌套、模块化思想1.用列表表示和计算平均气温2.用模块化设计批量计算平均气温1.用列表表示和计算平均气温批量数据列表调用函数如何计算平均气温?用列表表示和计算平均气温问题:已知气象台观测得到郑州4月12号4次气温值为17.21.24.25,求该日日平均气温思考1.分析问题(数学思路):日平均气温(17+21+24+25)/4用列表表示和计算平均气温2.分析问题(Python思路):知识点批量数据:一组数据类型相同的数据对象。数据类型可以简单类型,也可以复杂的构造类型。程序设计语言支持批量数据的存储,用统一的名称管理一批数据,在内存上的存储空间是连续的。一批量数据只需定义一个名称,程序的通用性更强。而一个单变量只可以控制一个数据,使用单变量,程序可控制的数据的个数是固定的。使用方便,可以组织循环控制结构,通过控制下标的值控制一批数据。批量数据的优势用列表表示和计算平均气温python语言中使用列表表示批量数据列表用[ ]表示。其中每一项可以使任意数据类型的数据项,各数据项之间用逗号分隔。通过赋值运算可以创建列表:L=[ ] #创建一个空的列表L例如:表述爱好批量数据为hobby=["篮球","羽毛球","看书","旅游","音乐"]各项数据按顺序排列,并允许按下标访问。下标是一个整数,通常从0开始,有效范围从0到列表长度减1。hobby[0]表示列表中第一个数据项篮球,hobby[4]表示列表中第i+1即第5个数据项音乐用列表表示和计算平均气温任务一:用Python计算日平均气温数学思路:日平均气温(17+21+24+25)/4(1)使用算术表达式计算代码实现t_Day=[17,21,24,25]avg = (t_Day[0]+t_Day[1]+t_Day[2]+t_Day[3])/4print(avg)用列表表示和计算平均气温t_Day = [17,21,24,25]avg = sum(t_Day)/len(t_Day)print(avg)(2)使用内置函数计算代码实现内置函数sum的作用是求列表中数值数据的累加和,len的作用是求列表中数据个数,有统计功能的内置函数还有max、min等内置函数Python列表的基本操作操作 描 述x1+x2 连接列表x1和x2,生成新列表x*n 将列表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中最小数据项v in x 检测v是否在列表x中,返回布尔值v not in x 检测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计算月平均气温多解计算月平均值可以使用内置函数吗?思考用列表表示和计算平均气温s=0n=0for i in range(len(t_day)):s=s+t_day[i]n=n+1avg=s/nprint(avg)下标访问完整代码对批量数据中数据项的访问方法:下标访问和迭代访问。1.列表命令:下标访问法(下标访问法是通过变量i表示下标值,该值从0到len(L)-1的变化,依次访问数据项L[i])语句写法:for i in range(0,len(L))访问L[i]用列表表示和计算平均气温2.列表命令:序列迭代访问法(迭代访问列表中的每一个数据项x)语句写法:for x in L访问xs=0n=0for x in t_day:s=s+xn=n+1avg=s/navg迭代访问完整代码用列表表示和计算平均气温3.使用用户自定义函数计算平均值用户自定义函数:由用户自己编写的、能够实现独立功能的语句块。完整写法:t_day=[34,32,33,33,35,36,36,35,34,33,32,32,32,31,32,32,30,30,31,32,29,31,32,30,26,26]def getavg(L)return sum(L)/len(L)avg=getavg(t_day)print(avg)4.读取文件中的数据列表 :若要长期存储并反复使用,可将其保存在文件夹中,在通过程序指令来读取文件中的数据列表=list(open(文件名))函数的定义中一般都包含return语句,return语句的作用是结束函数的执行,返回一个值作为函数的返回值。返回值可以是简单的整型数据、浮点型、文本数据等,也可以是复杂的列表等,还可以没有返回值,仅仅结束函数的执行。新命令:函数调用指令函数定义的一般格式如下:def 函数名(<参数>):函数体用列表表示和计算平均气温函数的定义例如,要计算7!+11!-10!,可以定义一个函数,用于计算n!。要计算n!,必须有一个参数接受n的值,并有一个返回值作为计算结果。用列表表示和计算平均气温2.用模块化设计批量计算平均气温文本数据表示、字符串、枚举算法文本数据的表示和操作打印字符①英文大小写字母a-z和A-Z;②数字字符0-9;③标点符号和一些键盘上的常见符号。控制字符回车、制表符、退格等。转义字符 描述 转义字符 描 述\\ 反斜杠符号 \t 横向制表符\’ 单引号 \r 回车\” 双引号 \n 换行\a 响铃 \(在行尾时) 续行符\b 退格(Backspace) \f 换页\e 转义 \oyy 八进制数yy代表的字符,如:\o12代表换行\000 空 \xyy 十六进制数yy代表的字符,如:\x0a代表换行字符串常量的使用前后必须一致。其中单引号、双引号可以表示单行字符串两者作用一致。使用单引号时,双引号可以是字符串的一部分;使用双引号时,单引号可以是字符串的一部分;使用三引号可以表示单行或多行字符串。文本数据的表示和操作>>> print("I'm a programmer.")I'm a programmer.>>> print('She said: "you are right".')She said:"you are right".>>> print('''三引号中可以有'单引号'可以有"双引号"还可以换行''')三引号中可以有'单引号'可以有"双引号"还可以换行1.Python字符串运算符操作符 描 述x+y 连接两个字符串x和yx*y 复制n次字符串xx in s 包含判断,判断字符串x是否为字符串s的子串,是则返回true,否则返回falsePython语言提供了对字符串类型的数据的通用操作,以实现对字符串的连接、复制、包含、索引s1 = "hello"s2 = "Python"s3 = s1+s2 # x+y 连接两个字符串x和yprint(s3)s4 = 3*s2 # x*y 复制n次字符串xprint(s4)print(s2 in s4) # xin s 包含判断,判断字符串x是否为字符串s的子串,是则返回true, 否则返回false2.Python字符串索引Python语言提供了对字符串类型的数据的通用操作,以实现对字符串的连接、复制、包含、索引操作符 描 述str[i] 索引操作,返回下标位置的一个字符str[N:M] 切片,返回从str[N]到str[M-1]的子串len(x) 返回字符串x的长度str(x) 返回任意类型x所对应的字符串索引操作返回字符串的单个字符格式:变量名[索引下标]st = "hello Python"print(st[0],st[4])#正索引(左到右)下标从0开始H oprint(st[-1],st[-6])#负索引(右到左)下标从-1开始n PPython字符串索引切片操作返回字符串中一段字符子串格式:变量名[下标1:下标2:步长]st="hello,python"#定义一个字符串print(st[0:10:3])#下标从0到10(不包含10)位置,步长为3【说明】下标1表示切片的起始位置,默认值为0下标2表示切片终止位置(但不包括这个位置)步长表示访问字符的间隔,默认值为1Python字符串切片字符串对象的常用方法常用方法 描述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拆分为字符串列表,默认为空格字符串对象的常用方法示例>>> s=' hello python '>>> t=s.strip()>>> s' hello Python '>>> t'hello Python'>>> t.find('he')0>>> s.count('h')2>>> L=t.split()>>> L['hello','Python']>>> t1=",".join(L)>>> t1'hello,Python'任务三判断车牌号练一练:#删除标号,并在标号的位置补充代码s=input("请输入车牌号:")n=len(s)x=s[n-1]while x<"0" or x>"9":n=n-1x=s[n-1]if int(x)%2==0:print("双号")else:print("单号")#删除标号,并在标号的位置补充代码s=input("请输入车牌号:")n=~~(s)#返回字符串s的长度x=~~~~~ #从字符串s的下标0开始,截取到下标为n-2while x<"0" or x>"9":~~~~~~~ #将n调整到下一个位置x=s[n-1]if ~~~~~~~~: #判断单双号print("双号")else:print("单号")模块化设计的思想“自顶向下、逐步求精”先进行顶层设计,再对各部分进行细化。这种程序设计方法使程序的结构变得更加清晰,程序的调试也更加简单。大多数解决现实问题的程序都比本书中介绍的程序要大得多,对于一个复杂的问题通常需采取“分而治之”的策略,也就是模块化设计的思想。常见算法---枚举算法试密码的过程列举判断把问题所有的可能解一一列举出来,并判断每一个列举出的可能解是否为正确的解。----枚举算法p122数字拨到000 尝试按下解锁按钮数字拨到001 尝试按下解锁按钮2. 数字拨到002 尝试按下解锁按钮3. 数字拨到003 尝试按下解锁按钮4. 数字拨到004 尝试按下解锁按钮...100.数字拨到099 尝试按下解锁按钮...枚举算法写法for <变量> in <序列>:if <条件>:print(变量)range( )函数格式:range([start,]stop[,step])功能:创建一个整数列表。参数:起始值,终值,步长。注意:终值不包括。例1 逢7跳过游戏:第1位同学从1开始数起,依次每人尽快数下一个数,凡是遇到7的倍数(如7、21等)或是数字中带7的数字(如17、71等),就要喊“过”说错或卡住了即被淘汰,这样一直数到100为止。用枚举算法寻找问题多解算法分析把问题所有的可能解一一列举出来, 并对每一个可能解进行判断,是真正解的时候输出“过”例1 逢7跳过游戏:第1位同学从1开始数起,依次每人尽快数下一个数,凡是遇到7的倍数(如7、21等)或是数字中带7的数字(如17、71等),就要喊“过”说错或卡住了即被淘汰,这样一直数到100为止。用枚举算法寻找问题多解逢7跳过游戏思路一一列举:1~100逐个检验:是7的倍数或包含77的倍数个位为7十位为7for i in range(1,101):i%7==0i%10==7i//10==7用枚举算法寻找问题多解用枚举算法寻找问题多解逢7跳过游戏代码实现枚举算法的思想和步骤逐一列举(循环结构)逐一判断(分支结构)易于理解容易证明既不遗漏也不重复确定枚举对象、范围和判定条件。逐一枚举可能的解,并验证每个解是否为正确的解。1、确定枚举范围1~1002、确定判断条件是7的倍数或包含73、编程求解用枚举算法寻找问题多解我国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡”问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏几何?每种最少一只数量条件:母鸡数量+公鸡数量+小鸡数量=100只价格条件:3*母鸡数量+5*公鸡数量+1/3*小鸡数量=100元例2、百钱买百鸡5钱3钱1钱确定枚举对象 确定枚举范围 确定判断条件公鸡(5元) 1≤x<20 ① x+y+z=100②5x+3y+ z=100母鸡(3元) 1≤y<33 小鸡(1/3元) 1≤z<100 用枚举算法寻找问题多解百钱买百鸡思路百钱买百鸡代码试一试百钱买百鸡代码实现枚举算法小结确定枚举对象、范围和判定条件逐一枚举可能的解——循环结构逐一验证是否为正确的解——分支结构减少枚举对象和枚举范围,提高算法效率1234单元总结总结请给自己评价 是/否,几颗星能调用自定义函数吗枚举算法理解了吗只给题意要求能自己独立写程序吗自我评价单下课 展开更多...... 收起↑ 资源预览