项目八第二课时用模块化设计批量计算平均气温 高中信息技术沪科版(2019)必修1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0 分 析 问1 题
2

在 Python语言中,可利用嵌套列表组织 以上数据:将每个月的日平均气温构成的列表 作为一个列表的数据项——子列表,构成嵌套 的列表,其形式如下:
[ [ ],[ ],[ ],[ ]……] 使用下标可以方便地访问嵌套列表中的每 一个子列表。
0 分 析 问1 题
2

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

设 计 算2 法

“自顶向下、逐步求精”的设计方法:选进 行顶层算法设计,再对各组成部分进行细化。
批量计算一年中12个月的月平均气温,可 以使用“自顶向下、逐步求精”的方法来设计 算法。
0

设 计 算2 法
枚举法的一般模式
确定范围
问题所涉及的情 况有哪些,情况 的种数是否可以 确定。
验证条件
分析出来的这些 情况,须满足什 么条件才能成为 问题的答案。
搜索范围
尽可能缩小搜索范 围,减少求解时间 。
用枚举法解决以下问题:
有一张由5位数构成的单据号码,其千位和 百位上的数字模糊不清了,已知这个数能被57 或67整除,请使用计算机求这张单据号码。
0

设 计 算2 法

算法步骤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

设 计 算2 法

(2)设计模块2的算法——计算12个月的月 平均气温
第2步算法细化 2.1 初始化avgy; 2.2 迭代访问dL中每一个子列表m;
2.2.1 列表m的平均值avg; 2.2.2 将avg追加到列表avgy中。
0

2

数 实


模块化设计中的子模块既可以用函数实现, 也可以直接用程序块实现。下面以模块1创 建日平均气温列表为例,完成其函数实现。

1.创建日平均气温列表;
2.计算12个月的月平均气温; 3.输出12个月的月平均气温。
0

设 计 算2 法

0

设 计 算2 法

(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

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

Python语言对文件采用统一的操作步骤,即“打开-操作--关闭”。
第一阶段 第二阶段 第三阶段
输入数据并做相应调整的处理 计算得到结果 显示结果并保存数据
二、模块化设计的思想
模块化设计的思想
大多数解决现实问题的程序都比本书中介 绍的程序要大得多,对于一个复杂的问题通常 需采取“分而治之”的策略,也就是模块化设 计的思想。
需求分析
需求分析所做的 事情是根据用户 的要求确定程序 应当具备哪些功 能,达到什么性

设计程序
设计程序阶段大 致又可再分为两 个子阶段,即程 序的模块化设计 和模块内的逻辑
设计。
编写程序
整个程序设计完 成之后,就可以 使用特定的程序 设计语言来编写
程序。
01
输入
02
处理
03
输出
一个程序的算法设计可以从三个基本步骤
三、常见算法——枚举法
枚举法
枚举法的基本原理是根据已知条件,在给 定的范围内对所有可能的答案按某种顺序进行 逐一枚举和检验,从中找出那些符合要求的答 案。
相关文档
最新文档