资源简介 第3章 算法的程序实现 浙教版 信息技术(高中) 必修1 数据与计算 3.3 简单算法及其程序实现 学习目标 1 2 3 解析算法及其程序实现。 枚举算法及其程序实现。 算法程序实现的综合应用。 1 2 重点难点 重点:算法程序实现的综合应用。 难点:算法程序实现的综合应用。 课堂导入 算法设计完成后,就可以用程序设计语言来描述算法,本节介绍如何使用python程序设计语言来描述一些简单算法。 3.3.1解析算法及其程序实现 答题卡填涂识别 (1)抽象与建模 灰度值=0.299x红色颜色分量+0.587x绿色颜色分量+0.114x蓝色颜色分量 (2)设计算法 ①给定颜色初值:输入某像素在RGB颜色模式下的各颜色分量。 ②转换颜色模式:将彩色(RGB颜色模式)值转化成灰度值。 ③判定黑、白颜色:若灰度值小于132, 则判定为黑色;否则判定为白色。 (3)编写程序 3.3.2枚举算法及其程序实现 例如,求解某整数x的所有因子(不包含x本身)。 判定某信息点是否被填涂,还需要对该信息点区域中的所有像素进行判断。 (1)抽象与建模 (2)设计算法 (3)编写程序 ①逐一列举某信息点中的各个像素。 ②如果当前枚举的像素是黑色,那么黑色像素的数量加1。 ③输出该信息点中黑色像素总数。 count=Σsi ,si={ n i=1 0 (Gray_scale [i] ≥132 1 (Gray_scale [i] <132) 对300个像素的颜色数据逐一进行列举并判断。 fname=input ("请输入文件名称:") f=open (fname, "r+") count=0 line=f.readline0( ) while line: line=line.split() R, G, B=map (int,line) if 0. 299*R+0. 587*G+0. 144*B <132: count=count+1 line=f.readline() if count> =300*0. 64: f.write ("\n已填涂!") else: f.write ("\n未填涂!”) f.close() 拓展链接: Python的文件读写操作 读写文件是计算机中常见的输入输出操作,读写文件时会请求操作系统打开一个文件对象,然后通过操作系统提供的接口从这个文件对象中读取数据(读文件), 或者把数据写入这个文件对象(写文件)。 Python内置了读写文件的函数。读文件时,可以使用内置的open0函数打开由参数指定的文件对象,并通过参数指定打开方式。如: >> > f=open (test.txr',r) 上述命令的作用是以读文件模式(参数丫)打开文件test.txt, 如果文件打开成功,可以用read () 方法将文件中的全部内容读取到内存。如果文件test.txt内容为“Hello,world! ”, 那么命令的执行结果为: >> > f.readO >> > 'Hello,world! ' 由于调用read( )会一次性读取文件的全部内容,为避免读取文件过大,可采用多次调用read (size) 方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,并按行返回list.因此,可根据实际需要灵活调用read()方法。如果文件很小,read()一次性读取比较方便;如果不能确定文件大小,反复调用read (size) 比较安全;如果是配置文件,调用readlines() 最方便。如: for line in f.readlines () : print (line.strip0) 文件使用完毕后必须关闭。关闭文件的方法如下: >> > f.close0 调用open()函数写文件时,用参数'w'表示写文本文件模式;'r+'模式则表示在打开一个文本文件时同时允许读和写。例如,将“Hello,world! ”写入test.txt, 可使用下列命令: >> > f=open ('test.txt', 'w) >> > f.write (Hello,world! ') >> > f.close() 问题与讨论: 请结合枚举算法的学习经历,谈谈枚举算法的一般程序结构特点。 3.3.3 算法程序实现的综合应用 创建函数bw_judge,能够根据彩色像素的RGB三种颜色分量值,通过计算进而识别该像素的颜色情况。 def bw_judge (R, G, B) : Gray_scale=0. 299*R+0. 587*G+0. 114*B if Gray_scale <132: color="黑色” else: color="白色" return color from PIL import Image im=Image.open ("RGB.bmp") pix=im.load0 width=im.size [0] height=im.size [1] count=0 for x in range (width) : for y in range (height) : R, G, B=pix [x,y] if bw_judge (R, G, B) =="黑色": count=count+1 if count> =width*height*0. 64: print ("已填涂!”) else: print ("未填涂!”) #size中有两个参数,第1个参数为图像宽度值 #第2个参数为图像高度值 #根据像素坐标获得该点的 RGB值 #bw_judge函数用于判断黑、白像素 问题与讨论: 分析本节中的准考证号填涂识别算法及其程序实现,你认为 在提高填涂识别的准确性及合理性等方面还可以做哪些完善?相 应的程序又如何实现? 实践与体验: 图像字符画 字符画是一种由字母、标点、汉字或其他字符组成的图画。复杂的字符画 通常利用占用不同数量像素的字符代替图像上不同明暗的点,用纯文字拼出该 图像所对应的黑白图,可以由程序制作而成。 谢 谢! Thanks! https://www.21cnjy.com/help/help_extract.php 展开更多...... 收起↑ 资源预览