项目八第二课时用模块化设计批量计算平均气温 高中信息技术沪科版(2019)必修1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0 分 析 问1 题
2
3
在 Python语言中,可利用嵌套列表组织 以上数据:将每个月的日平均气温构成的列表 作为一个列表的数据项——子列表,构成嵌套 的列表,其形式如下:
[ [ ],[ ],[ ],[ ]……] 使用下标可以方便地访问嵌套列表中的每 一个子列表。
0 分 析 问1 题
2
3
f=open("c:\\sample\\2013avgtq.csv") yL=[] for line in f
项目八 分析历史气温数据 ——设计批量数据算法
第二课时 用模块化设计批量计算平均气温
目录
“自顶向下、逐步求精”的程序设计方法 模块化设计的思想 常见算法——枚举法 用模块化设计批量计算平均气温
一、“自顶向下、逐步求精”的程序设计方法
“自顶向下、逐步求精”
先进行顶层设计,再对各部分进行细化。 这种程序设计方法使程序的结构变得更加清晰 ,程序的调试也更加简单。
两个物体有装配关系时,将一个物体嵌入另一物 体,这种方法叫做嵌套。嵌套的思想在计算机程 序设计中应用广泛。典型的嵌套包括嵌套控制结 构和嵌套数据结构。
已知某地2013年365天的日平均气温数 据(已按一月一行的形式存放在“2013avgtq.csv” 文件中,下图显示了前两个月的数据),批量计算 该地2013年12个月的月平均气温。
2.设计算法
1.输入a、d、e; 2.循环b从0到9, step1; 2.1 循环c从0到9,step1; 2.1.1 number=ax1000+bx100+cx100+dx10+e; 2.1.2 如果 number能被57或67整除,则输出
number。
四、用模块化设计批量计算平均气温
嵌套
0
1 在 Python Shell 中编写并测试函数 readNList,
该函数功能为从参数中获取指定文件名,读入
2 文件数据到列表,处理后得到包含12个月的日
yL.append(L)是将列表L追加到列表yL中,作为一 个数据项。
close函数用来关闭文件。
0
1
设 计 算2 法
3
“自顶向下、逐步求精”的设计方法:选进 行顶层算法设计,再对各组成部分进行细化。
批量计算一年中12个月的月平均气温,可 以使用“自顶向下、逐步求精”的方法来设计 算法。
0
1
设 计 算2 法
枚举法的一般模式
确定范围
问题所涉及的情 况有哪些,情况 的种数是否可以 确定。
验证条件
分析出来的这些 情况,须满足什 么条件才能成为 问题的答案。
搜索范围
尽可能缩小搜索范 围,减少求解时间 。
用枚举法解决以下问题:
有一张由5位数构成的单据号码,其千位和 百位上的数字模糊不清了,已知这个数能被57 或67整除,请使用计算机求这张单据号码。
0
1
设 计 算2 法
3
算法步骤1.3是一个循环结构,1.3.2也是一个循 环结构,在循环结构中出现了另一个循环结构,这称为 循环的嵌套结构,也称多重循环。
第1.3步算法细化 1.3.1 按逗号切割字符串line中的数据到列表L; 1.3.2 循环i从0到len(L)-1;
1.3.2.1 将L[i]转化为整数; 1.3.3 将L追加到列表dL中。
0
1
设 计 算2 法
3
(2)设计模块2的算法——计算12个月的月 平均气温
第2步算法细化 2.1 初始化avgy; 2.2 迭代访问dL中每一个子列表m;
2.2.1 列表m的平均值avg; 2.2.2 将avg追加到列表avgy中。
0
1
2
函
数 实
3
现
模块化设计中的子模块既可以用函数实现, 也可以直接用程序块实现。下面以模块1创 建日平均气温列表为例,完成其函数实现。
3
1.创建日平均气温列表;
2.计算12个月的月平均气温; 3.输出12个月的月平均气温。
0
1
设 计 算2 法
3
0
1
设 计 算2 法
3
(1)设计模块1的算法创建日平均气温列表
第1步算法细化 1.1打开文件对象f; 1.2初始化新列表dL; 1.3逐行读入文件数据,将一行字符 串切割,转化为整型数据后,作为子 列表追加到列表d中; 1.4关闭文件。
1.问题分析
假设这个5位数为abcde,则 abcde=ax10000+bx1000+cx100+dx10+e。本问题中,已知万 位、十位、个位上的数字a、d、e(可以由用户输入),而千 位和百位上的数字b、c是待求的,因此可采用枚举法列举b 、c所有可能的数字(0-9),每列举一次,判断构造的号码能 否被57或67整除,若能则输出该号码。
open函数用来打开文件(默认用只读方式打开),并 返回文件对象。
for line in f是逐行访问文件对象f。
line表示一行字符串。
0 分 析 问1 题
2
3
line. replace("\n","")是将每一行结束处的换行符 "\n"用空串替代,相当于删除换行符。
Line.split(",")是按照逗号将line字符串切割为若干 个字符串,返回一个列表。
line=line.replace("\n","") L=line.split(",") for i in range(len(L)):
L[i]=int(L[i]) yL.append(L) f.close ()
0 分 析 问1 题
2
3
Python语言对文件采用统一的操作步骤,即“打开-操作--关闭”。
第一阶段 第二阶段 第三阶段
输入数据并做相应调整的处理 计算得到结果 显示结果并保存数据
二、模块化设计的思想
模块化设计的思想
大多数解决现实问题的程序都比本书中介 绍的程序要大得多,对于一个复杂的问题通常 需采取“分而治之”的策略,也就是模块化设 计的思想。
需求分析
需求分析所做的 事情是根据用户 的要求确定程序 应当具备哪些功 能,达到什么性
。
设计程序
设计程序阶段大 致又可再分为两 个子阶段,即程 序的模块化设计 和模块内的逻辑
设计。
编写程序
整个程序设计完 成之后,就可以 使用特定的程序 设计语言来编写
程序。
01
输入
02
处理
03
输出
一个程序的算法设计可以从三个基本步骤
三、常见算法——枚举法
枚举法
枚举法的基本原理是根据已知条件,在给 定的范围内对所有可能的答案按某种顺序进行 逐一枚举和检验,从中找出那些符合要求的答 案。