第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一

2026-04-29
| 83页
| 445人阅读
| 1人下载
普通

资源信息

学段 高中
学科 信息技术
教材版本 高中信息技术浙教版必修1 数据与计算
年级 高二
章节 第三章 算法的程序实现
类型 课件
知识点 -
使用场景 同步教学-新授课
学年 2026-2027
地区(省份) 浙江省
地区(市) -
地区(区县) -
文件格式 PPTX
文件大小 109.96 MB
发布时间 2026-04-29
更新时间 2026-04-29
作者 修修哦~
品牌系列 -
审核时间 2026-04-29
下载链接 https://m.zxxk.com/soft/57605684.html
价格 2.00储值(1储值=1元)
来源 学科网

内容正文:

信息技术 必修内容 第 ‹#› 页 3 第三章 算法的程序实现 Python C++ Objective Java Script PHP COBOL PL/SQL Scheme C ABAP Mathematica Ruby Scala Fortran Logo Erlang MATLAB Dart Max/MSP lisp F# ML Clarion Yacc Haskell lo c# Transact-SQL FoxPro Lua cT 第三章 算法的程序实现 算法的程序实现 用计算机编程解决问题 的一般过程 简单算法及其 程序实现 Phython语言 程序设计 抽象与建模 设计算法 编写程序 调试运行程序 Python语言基础 顺序结构的程序实现 分支结构的程序实现 循环结构的程序实现 函数与模块 解析算法及其程序实现 枚举算法及其程序实现 算法程序实现的综合应用 如何用计算机画出一个正多边形? 边长、边数、内角度数 手画 VS 计算机画 3.1 用计算机编程解决的一般问题 1.抽象与建模 正多边形的各边边长相等,各内角度数也相等。因此,绘制一个正多边形,可以通过“画一条边,旋转一定角度后再画一条边”的重复操作来完成。 绘制正多边形,除了要知道它的边数n和边长a,关键是要计算除每次旋转的角度。因此,解决这个问题的计算模型可以表示如下: 假设正多边形的边数为n,边长为a。 则内角度数d的值为:d=(n-2)×180÷n 每次旋转的角度为:180-d. 第 ‹#› 页 基于问题的抽象与建模,绘制一个正多边形的算法可以作如下描述: 输入要绘制的正多边形的边数n和边长a。 计算正多边形的每个内角度数d,其中d=(n-2)×180÷n。 将以下过程重复执行n遍:画一条长度为a的线段,再讲画笔方向向左(逆时针)旋转(180-d)度。 2.设计算法 3.编写程序 要让计算机按照预先设计的算法进行处理,需要将该算法用计算机程序设计语言描述,形成计算机程序。绘制正多边形的算法用Python语言描述如下: import turtle n=int(input("请输入正多边形的边数n:")) a=int(input("请输入边长a:")) d=(n-2)*180/n t=turtle.Pen() for i in range(n): #重复执行n遍 t.forward(a) #向前绘制长度为a的线段 t.left(180-d) #向左旋转(180-d)度 turtle.done() 第 ‹#› 页 import turtle n=int(input("请输入正多边形的边数n:")) a=int(input("请输入边长a:")) d=(n-2)*180/n t=turtle.Pen() for i in range(n): #for循环,重复执行n遍 t.forward(a) #向前绘制长度为a的线段 t.left(180-d) #向左旋转(180-d)度 turtle.done() for <变量> in <序列>: <循环体> [else: <语句块1>] 4.调试运行程序 通过运行程序,计算机会自动执行程序中的命令。但是,在将算法进行程序实现时,可能会因为录入错误、语法错误、逻辑错误等原因,导致程序不能正常运行或输出错误的结果。此时,需要对结果进行调试,以便发现错误并进行修正。例如,字母大小写的疏忽可能直接决定程序能否直接正常运行,程序中的参数调整可能会影响输出图形的形状。 思考与练习 ? “哥德巴赫猜想”:每个大于2的偶数都是两个素数之和。 (素数:除了1和它本身之外,不能被其他自然数整除的整数。) 第 ‹#› 页 本节重点!!! 用计算机解决问题的一般过程分为: 抽象与建模 设计算法 编写程序 调试运行程序 第 ‹#› 页 3.2 Python 语言程序设计 Python是一种面向对象、解释型的计算机程序设计高级语言,其语法简洁清晰,方便对数据进行组织和处理;具有丰富和强大的库,可以支持很多日常问题的程序实现。因其解释性语言的本质,Python在大多数平台都是一种理想的脚本语言,特别适合应用程序的快速开发。 3.2.1 Python语言基础 1.编程环境 集成开发环境(Integrated development Environment,简称IDE),用于Phython程序的开发的IDE:IDLE 第 ‹#› 页 3.2 Python 语言程序设计 命令提示符!!! 语法高亮 第 ‹#› 页 3.2 Python 语言程序设计 第 ‹#› 页 课 堂 练 习 用计算机解决问题的一般步骤: 、 、 、 ; 抽象与建模 设计算法 编写程序 调试与运行程序 2. Pyhthon是一种 、 的计算机程序设计高级语言。 面向对象 解释型 3. 请参照教材书P71页,将绘制多边形的程序算法用Python语言表示出来,并提交程序文档。 【注:文档命名方式为:班级+学号+姓名,示例:19101邹修鸿】 4. 若第3题程序完成后,可参照教材P72页,熟悉Python编程环境。 a=int(input(“请输入整数a的值:”)) b=int(input(“请输入整数b的值:”)) c=a #语句1 a=b #语句2 “#”后为注释语句 b=c #语句3 print(”a=”,a) print(”b=”,b) input函数实现了用户和计算机程序的交互输入,当用户根据提示”请输入整数a的值:”,输入合适的数据后按回车,input会将输入的数据以字符串的形式接收到程序中。 int函数将接收到的字符串数据转换为整型数据。 Print函数实现计算结果输出。 教材P75 第 ‹#› 页 2.数据类型与表达式 数据类型名 数据表示形式 整型 数学中的整数;十六进制数(用0x前缀),如:0xff00 实型 数学中的实数,如3.14;用科学计数法表示的实数,如0.000012=1.2e-5 字符串型 用单引号、双引号、三引号表示 布尔型 只有两种值:True和False。布尔型数据可以进行not、and和or等逻辑运算 大小关系以及成员运算(包含关系) Python的基本运算包括算数运算、关系运算和逻辑运算三大类。 加减乘除 表3.2.1 Python常见数据表达式 补充: int float str boolean 第 ‹#› 页 表3.2.2 Python算术运算符 运算符 表达式 描述 示例 优先级 ** x**y 求x的y次幂 5**2结果为25 1 * x*y 将x与y相乘 5*2的结果为10 2 / x/y 用x除以y,产生实数值 5/2的结果为2 2 // x//y 用x除以y,取整数部分 5//2的结果为2 2 % x%y 用x除以y,取余数 5%2的结果为1 2 + x+y 将x与y相加 5+2的结果为7 3 - x-y 将x减去y 5-2的结果为3 3 优先程度最高级别为1,级别数字越大,优先级越低(运算顺序越靠后) 相同优先级, 从左往右依次计算 第 ‹#› 页 补充: 乘法*的应用(除数值类型以外): 1.用python符号表示如下算式 勾股定理 求根公式 a**2+b**2==c**2 x==(-b+(b**2-4*a*c)**0.5)/(2*a) 课堂练习 运算符 表达式 描述 示例 优先级 > x>y x大于y 5>2结果为True 4 < x<y x小于y 5<2结果为False 4 >= x>=y x大于等于y 5>=2结果为True 4 <= x<=y x小于等于y 5<=2结果为False 4 == x==y x等于y 5==2结果为False 4 != x!=y x不等于y 5!=2结果为True 4 in x in y x是y的成员 “5”in”2”结果为False 4 表3.2.2 Python 关系运算符 第 ‹#› 页 表3.2.3 Python 逻辑运算符 运算符 表达式 描述 优先级 示例 and x and y 布尔“与” 6 True and False结果为False or x or y 布尔“或” 7 True or False结果为 True not not x 布尔“非” 5 not False结果为 True 第 ‹#› 页 3.变量和赋值语句 为了灵活地使用使用这些数据,可以使用变量来存储。在Python中,变量名可以包括字母、数字和下划线,但不能以数字开头,而且字母区分大小写,保留字不能使用。由于Python是动态类型语言,因此在使用前不需要预先声明变量的数据类型。 变量名:degree_cel 实数型 字符串型 赋值语句(从后往前), “=”为赋值符号 number+=1 类似的赋值运算符还有“-=”“*=”“/=”和“%=”等 第 ‹#› 页 3.2.2 顺序结构的程序实现 观察:图3.2.6 将a、b两值互换,使用Python语言实现此算法的程序如下: a b c c=a a=b b=c 返回 第 ‹#› 页 上 机 实 验 体会input、print、算数运算符、关系运算符的应用 9.16 作业: 《3.1用计算机编程解决问题的一般过程》 《3.2 第1课时 Python语言基础》选择题1-16 伴 你 成 长 复习拓展 已知三角形三边a,b,c,求构成三角形的条件的表达式 a+b>c and b+c>a and a+c>b not(a+b<=c or b+c<=a or a+c<=b) 4.基本数据结构 在超市购物清单中,一条商品信息由“编号”(字符串型)、“名称”(字符串型)、“单价”(实型)、“数量”(实型)等数据组成,在Python中可用来列表来组织和存储;而在处理学生基本档案信息时,可以用字典组织数据。列表、字典都是Python中常用的数据结构。 (1)字符串和列表 字符串和列表都是由一些数据元素共同组成的一个序列整体。字符串是由0个或多个字符组成的序列。列表也是由0个或多个元素组成的序列,其中的元素可以是数字、字符串等混合类型的数据,甚至是其他的列表。也就是说,不同的元素可以存在同一类表中。列表一旦创建,就可以添加或删除其中的元素。列表用方括号”[ ]”来表示,元素之间用逗号隔开。 可创建名为info的列表: >>>info=[“BH60018”,”苹果”,50] 第 ‹#› 页 LLQ (L) - >>>info=[“BH60018”,”苹果”,50] 索引序列 0 1 2 N-2 N-1 …… 图3.2.3 包含N个元素的序列索引 info列表的索引如图3.2.4所示。 “BH60018” ”苹果” 50 正索引: 0 1 2 图3.2.4 info列表索引 负索引: -3 -2 -1 列表第3项 列表第2项 单个元素的访问! info[10]? 索引值越界 第 ‹#› 页 一定范围内的元素访问,可以通过冒号”:”间隔的两个索引参数(开始元素序号、结束元素的后一个序号)来实现。 形如:列表号[开始元素序号:结束元素序号的后一个序号:步长] (注意:步长省略时,为1) 负索引如何操作 第 ‹#› 页 (2)字典 字典和列表相似,可包含多个元素。字典中的每个元素包含两部分:键和值。键通常用字符串或数值来表示,值可以是任意类型的数据。键和值两者一一对应,且每个键只能对应一个值。类似于现实的字典,可找到某个字,从而找到它的注解。 形如:d={key1:value1,key2:value2……} 字典中的元素是没有顺序的,引用元素时以键为索引。例如: ‘铅笔’ ‘橡皮’ ‘尺子’ ‘钢笔’ 第 ‹#› 页 表3.2.5 Python常见内建函数 函数 描述 print 输出x的值 input([prompt]) 获取用户输入 int(object) 将字符串和数字转成整型 float(object) 将字符串和数字转成实型 abs(x) 返回x的绝对值 help(x) 提供交互式帮助 len(seq) 返回序列的长度 str(x) 将x转换成字符串 chr(x) 返回x对应的字符 ord(x) 返回x对应的ASCII码 round(x[,n]) 对x进行四舍五入(如果给定n,就将x转换成小数点后有n位的数) max(s,[,args…]) 返回序列的最大值(如果给定多个参数,则返回给定参数中的最大值) min(s,[,args…]) 返回序列的最小值(如果给定多个参数,则返回给定参数中的最小值) 9.22 作业: 《3.2 第1课时 Python语言基础》第17-20题 《第2课时 顺序、分支、循环的程序实现(1)》第1-7题 明天在教室上课! 伴 你 成 长 错误题目:17 A 18 D 课堂练习 1.将小写字母ch1转换成大写字母ch2 ch2=chr(ord(ch1)-32) 2.判断任意整数n是否为完全平方数 int(n**0.5)==n**0.5 if : print(“n为完全平方数”) 3.2.3 分支结构的程序实现 1.if语句 一般格式是: if<条件>: <语句块1> else: <语句块2> 省略else和语句块2 if<条件>: <语句块> 注意:在python中,行尾冒号则为建立一个新的语句块。因此,出现冒号,则需要缩进(4个空格)。 第 ‹#› 页 用分支结构(if-else)语句实现Python程序 1.判断任意三个不同整数之间的最大值,并输出。 课堂练习 区间测速 在同一路段上布设两个监测点,基于车辆通过前后两个监测点的时间来计算车辆在该路段上的平均行驶速度,以此来判断是否超速。 (1)抽象与建模 通过计算出实际行驶速度与标准速度进行比较,以此来判断是否超速。 实际速度VS标准速度 变量名 数据类型 含义 s 数值型——整型 区间距离(千米) t 数值型——整型 用时(秒) v 数值型——整型 平均车速(千米/时) 判断结果= “正常”(v≤100) “超速”(v>100) (其中,=) 第 ‹#› 页 (2)设计算法 解决问题关键:根据v的值做出判断,所以采用分支结构设计算法。如图3.2.8所示。 此语句的输出并不依赖于对v的判断,即无论是否“超速”,都输出“超速”结论。 第 ‹#› 页 1.if-elif语句 一般格式是: if<条件1>: <语句块1> elif<条件2>: <语句块2> …… elif<条件n>: <语句块n> else: <语句块n+1> if a>b and b>c: print(“最大的数是:”,a) elif b>c and b>a: print(“最大的数是:”,b) else: print(“最大的数是:”,c) 第 ‹#› 页 1.输入分数,实现成绩分级: 成绩≥85,“优秀” 70≤成绩<85,“良好” 60≤成绩<70,“及格” 成绩<60,“不及格” P78(if-elif语句) 课堂练习[板书] score=int(input("请输入分数")) if score>=85: print("优秀") elif score>=70: print("良好") elif score>=60: print("及格") else: print("不及格") 伴 你 成 长 课堂练习 P25 第17题 注:第11题 format函数 判断闰年的方法 能被400整除或者能被4,但是不能被100整除。 9.23 作业: 《第2课时 顺序、分支、循环的程序实现(1)》 P23-24 第8-12题、第15、16题 伴 你 成 长 伴 你 成 长 复习巩固:P25(if-elif) 十八位身份证号码由六位数组地址码、八位数字出生日期码、三位数字顺序码和一位校验码组成(其中倒数第二位是性别代码,男单女双)。 请编程实现身份证号码中所包含的出生日期和性别信息,输出格式如下: 您的出生日期为:XXXX年XX月XX日,性别为X info=input(“请输入十八位居民身份证号码:”) if int(info[16])%2==1: xb=“男” else: xb=“女” print(”您的出生日期为:”,info[6:10],”年”,info[10:12],”月”,info[12:14],”日”,”性别为:”,xb) 3.2.4 循环结构的程序实现 1.for语句 一般格式是: for <变量> in <序列>: <循环体> [else: <语句块1>] 内建函数:range(起始值,终值,步长值) 若起始值缺省,则默认为0;若步长缺省,则默认为1 例如:range(0,10,1) 也可写成 range(10) 第 ‹#› 页 体会python语句中end=‘’的作用 必有初值 第 ‹#› 页 2.while语句 while<条件>: <循环体> 在许多情况下,当一个循环执行之前,可能并不知道它需要执行的次数。 常见格式如下: 第 ‹#› 页 循环结构:for 与 while 的区别和联系 sum=0 for i in range(1,10): sum=sum+i print(“sum的值为:”,sum) i=1 sum=0 while i<10: sum=sum+i i=i+1 print(“sum的值为:”,sum) 9.29 171 第 ‹#› 页 9.29 作业: 《第2课时 顺序、分支、循环的程序实现(2)》 P26-28 第1-14题(第3、4题不做,第8题题目有错) 国庆作业!!!!课代表明天中午过来拿 伴 你 成 长 number=23 running=False while not running: guess=int(input(“请输入猜测的数字:”)) if guess==number: print(“正确”) running=True elif guess<number: print(“偏小”) else: print(“偏大”) break的用法:猜数 什么时候循环终止? guess!=number print(“正确”) number=23 guess=int(input(“请输入猜测的数字:”)) while : if guess==number: elif guess<number: print(“偏小”) else: print(“偏大”) guess=int(input(“请输入猜测的数字:”)) break 退出当前循环(if) 第 ‹#› 页 break VS continue continue和break有点类似,不过continue不会退出循环,而是跳过当前的循环执行之后的循环。 break:立即退出当前循环,直接结束循环。 10.8 作业: 明天早上交 《第2课时 顺序、分支、循环的程序实现(2)》 P26-28 第14-17题 伴 你 成 长 作业本 (双色版) P36 第1、2、3、4(1)(2) 下周一交 P41 第1、2、3、4、5(1) 3.2.5 函数与模块 1.函数的构造及应用 Python中的内建函数:range+教材P75 自定义函数语法如下: def 函数名(参数集合): <函数体> [renturn 函数值] 第 ‹#› 页 已知三角形三边,求三角形面积(海伦公式),若要求解上述四边形面积需将三边代入求解2次 函数与参数的调用 形参 实参 第 ‹#› 页 自定义函数模块举例 #自定义一个函数,求解最大值 def max(a,b): if a>b: return(“最大值为:”,a) else: return(“最大值为:”,b) #调用这个函数 result=max(8,67) print(“最大的值为:”,result) 自定义函数的作用: 对于相同程序算法处理反复操作时,可采用自定义函数,定义一次,调用多次。 第 ‹#› 页 课堂练习 1.定义函数fact计算n!(while/for都可以),写出关键步骤即可 while和for的区别和联系! 2.模块的导入及应用 方法一 >>>import math >>>math.sqrt(9) 3.0 方法二 >>>from math import sqrt >>>sqrt(9) 3.0 方法一: import 模块名 模块名.函数名(参数) (相对路径) 方法二:from 模块名 import 函数名 函数名(参数) (绝对路径) 第 ‹#› 页 2.1 math模块的应用 import math r=float(input(“请输入圆的半径:”,r)) pi=math.pi s=pi*pow(r,2) #可以使用内建函数 print(“圆的面积为:”,str(s)) 第 ‹#› 页 第 ‹#› 页 2.2 random模块的应用 例题:随机安排高一年级的出场顺序 import random cla=[“(2)班”,“(3)班”,“(5)班”, “(8)班”,“(9)班”,] random.shuffle(cla) for x in cla: print(x) 此运行结果不定! 第 ‹#› 页 2.3 image模块的应用 Image模块是PIL库中的重要模块,它包含对图像的常规操作(获取图像尺寸、像素颜色、旋转图像或改变格式) 第 ‹#› 页 第 ‹#› 页 作业本 (双色版) 作业:《第3课时 函数与模块》(最后一题选做) 伴 你 成 长 明天早上交绿本,拿蓝本(周末作业)回去 周末作业:《3.6 函数与模块》1-4题 3.3简单算法及其程序实现 解析算法:根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过数学表达式之间的关系来实现问题的求解 !!!!! 已知正方形边长a和面积s,求解s与a的关系 答题卡填图识别 以彩色图像(RGB)为例,先按照如下数学模型将彩色图形中的每个像素的R、G、B值转化为灰度值: 灰度值=0.299×红色颜色分量+0.587×绿色颜色分量+0.114×蓝色颜色分量 计算出灰度值以后,依据一定的颜色判断标准(如灰度小于132,判断为黑色,否定判断为白色),将灰色近似判断为白色或黑色。 (1)抽象与建模 第 ‹#› 页 (2)设计算法 给定颜色初值:输入像素RGB的颜色分量 转换颜色模式:将彩色转换为灰度值 判定黑白颜色:若灰度值小于132,则判定为黑色;否则判定为白色。 (3)编写程序 程序 结果 R=43 G=10 B=241 Gray_scale=0.299*R+0.587*G+0.114*B if Gray_scale<132: print(“黑色”) else: print(“白色”) 黑色 第 ‹#› 页 3.3.2 枚举算法及其程序实现 枚举算法:把问题所有可能的解一一列举,然后判断每一个列举出的可能解是否为正确解。(也称穷举)!!! 例:求解某整数x的所有因子(不包含x本身),可以一一列[1,x-1]范围内的所有整数,如果能被这个范围内的某个整数整除,那么这个数就是整数x的因子。 程序 测试结果 x=int(input(“请输入整数x:”)) i=1 while i<=x-1: if x%i==0: print(i) i=i+1 请输入整数x:243 1 3 9 27 81 针对上述例子,是否可缩小范围: [1,x-1] [1,] 既没有遗漏任意一个解,又尽可能解的列举范围,以提高算法的效率。 第 ‹#› 页 (1)抽象与建模 答题卡填图识别(信息区域) 判断某信息点填涂标准:黑色数量数量不小于该信息点区域内所有像素数量的64% count= (其中,count计算黑色像素总数,Gray_scale[i]为某个像素的灰度值) (2)设计算法 逐一列举某信息点中的像素(枚举法)。 如果当前像素是黑色,那么黑色像素的数量加1。 输出该信息点中的黑色像素总数。 第 ‹#› 页 (3)编写程序 程序 结果 count=0 Gray_scale=[47,178,146,185,116] for i in range(0,len(Gray_scale)): if Gray_scale[i]<132: print(“第”+str(i+1)+”个像素为黑色:”) count=count+1 print(”黑色像素总共有:”+str(count)+”个。”) 第1个像素为黑色; 第5个像素为黑色; 黑色像素总共有:2个。 已经计算好的灰度值 若用RGB分量表示,为了方便枚举,可以将三个分量值用列表p_color表示: R= p_color[i][0] G= p_color[i][1] 表示第i个像素的各颜色分量 B= p_color[i][2] p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]] 列表里面套列表 第 ‹#› 页 从某问价读取300个像素的颜色数据,并将判断后的结果写入文件。 fname=input(“请输入文件名称:”) f=open(fname,”r+”) #以读写的方式打开文件 count=0 line=f.readline() #从文件中读取一行 while line: #当line为空(从文件中读取到了数据) line=line.spilt() #把空白字符去除,变成包含三个str的list R,G,B=map(int,line) #把line中的三个str转化成int并赋值给R,G,B if 0.299*R+0.587*G+0.144*B<132: count=count+1 line=f.readline() #继续读取一行 if count>=300*0.64: f.write(“ 已填涂!”) else: f.write(“ 未填涂!”) f.close() 第 ‹#› 页 拓展链接 Python的文件读写操作 读写文件计算机常见的输入输出操作,读写文件时会请求操作系统打开一个人文件对象,然后通过操作系统提供的接口从这个文件对象读取数据(读文件),或者把数据写入这个文件对象(写文件)。 Python中内置了读写文件的函数。读写文件时,可以使用内建函数。读文件时,可以使用open()函数打开有参数指定的文件对象,并通过参数指定打开方式。如: >>>f=open(‘test.txt’,’r’) 上述命令的作用是以读文件模式(参数’r’)打开文件test.txt,如果文件打开成功,可以用read()方法将文件中的全部内容读取到内存。如果文件test.txt内容为”Hello word!”,那么命令执行结果为: >>>f.read() >>>’Hello word!’ 第 ‹#› 页 拓展链接 read( ):一次性读取文件的全部内容,为避免文件过大,影响计算机运行速度。 read(size):每次最多读取size个字节的内容 (根据文件大小、是否确定文件大小来选择性调用函数) for line in f.readlines( ): #读取配置文件 print(line.sptrip()) >>>f=open(‘test.txt’,’w’) #参数’w’表示写文本文件模式,’r+’模式则表示打开同时允许读和写 >>>f.write(’Hello word!’) >>>f.close() #关闭文件 3.3.3 算法程序实现的综合应用 创建函数bw_judge,能根据彩色像素的RGB三种颜色的分量值,通过计算进而”识别”该像素的颜色情况。 def bw_judge(R,G,B): Gray_scale= 0.299*R+0.587*G+0.144*B if Gray_scale[i]<132: color=“黑色” else: color=“白色” return color 调用函数bw_judge(43,10,241),则返回的函数将是彩色像素RGB(43,10,241)被识别之后的结果。 *若需要多次检测像素,则调用函数即可。 第 ‹#› 页 为方便读取图像中的像素颜色,并快速实现分析、判断,可以使用Python中的Image模块。实现此项目的Python如下: from PIL import Image im=Image.open(“RGB.bmp”) pix=im.load() width=im.size[0] #size中有两个参数,第1个参数为图像宽度值 height=im.size[1] #第2个参数为图像高度值 count=0 for x in range(width): for y in range(height): R,G,B=pix[x,y] #根据像素坐标获得该点的RGB值 if bw_judge(R,G,B)==“黑色”: #bw_judge函数用于判断黑、白像素 count=count+1 if count>=width*height*0.64: print(“已填涂!”) else: print(“未填涂!”) 第 ‹#› 页 答题卡填图识别(对一批信息点进行检测) (1)抽象与建模 90个信息点,每个信息在图像中有固定的坐标,根据坐标确定位置 图3.3.4 左上角的4个信息点的坐标 坐标(水平方向值,垂直方向值) 其中,”start”为准考证号填涂区的第一行第一列的信息起始位置,其坐标记作(x_start,y_start) 第 ‹#› 页 水平方向总宽度: total_width= fill_width+ space_width 垂直方向总高度: total_ height= fill_height+ space_height 答题卡中任意起始一个信息点的 起始位置水平方向坐标值x可表示为: x=x_start+ total_width*col 起始位置垂直方向坐标值y y=y_start+ total_height*row 其中col为列号,row为行号;col内的整数,row[0,9]范围内的整数 图3.3.5信息坐标分析示意图 宽度:fill_width 高度:fill_height 信息之间的间隔距离(space_width,space_height)都相同,且同一列的信息水平方向坐标和同一列的信息点垂直方向坐标值也都相同。 根据每个信息点的起始坐标,就可以找到每个信息点的填涂区域,从而进行识别。 第 ‹#› 页 (2)设计算法 初始化数据:读取填涂区图像、输入信息点的相关参数。 确定信息点的位置:按从左到右(按列),从上到下(按行)的顺序对每个信息点进行检测。 检测信息点填涂:若该信息点被填涂,则将填涂处信息(即row的值)连接至准考证号(number):反之,则用”#”标记,并将其连接至准考证号(number)。 输出填涂的准考证号。 (3)编写程序 第 ‹#› 页 第 ‹#› 页 第 ‹#› 页 教材P89.第6题. 运行以下程序,观察所呈现的图形,思考每行语句的功能; 更改程序:三个圈,背景色为黑色 《双色作业本》P58 第6题 上 机 实 验 第 ‹#› 页 上机实验结果: 第 ‹#› 页 伴 你 成 长 10.21 作业:周五早上交,中午拿回去 《3.3 简单算法及其程序实现》前8题 《3.3》剩下部分为周末作业 素数的判断: 假设任意正整数N,存在N=x*y(x,y不一定为整数) 不妨假设x≤y, 所以,N,即,即N的较小因子在1~ 若N能被较小因子整除,较大的就不用计算了。 例如:判断39是否为素数 范围[2,39//2],即为[2,19] 范围:[2,],即为[2,6] ?两种方法差距的范围[7,19]为什么没有必要算 第 ‹#› 页 考试范围:《必修1 数据与计算》前3章(包括拓展部分知识点) 考试时间:(信息+通用)90分钟。满分100,各50分 分数占比:第一章、第二章各占15%左右,第三章70% 考试题型:选择、(程序)填空、程序编写 第 ‹#› 页 $

资源预览图

第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一
1
第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一
2
第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一
3
第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一
4
第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一
5
第三章 算法的程序实现课件-2025-2026学年浙教版高中信息技术必修一
6
相关资源
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。