2022年上半年 高中信息技术 学业水平考试 复习(—) 从—道题看高中信息技术python编程教学

文档属性

名称 2022年上半年 高中信息技术 学业水平考试 复习(—) 从—道题看高中信息技术python编程教学
格式 docx
文件大小 114.1KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2022-07-04 21:09:11

图片预览

文档简介

2022年上半年高中信息技术学业水平考试复习(一)
------------从一道题看高中信息技术python编程教学
根据2017年高中信息技术课程标准的规定,必修课程《数据与计算》模块包括“数据与信息”、“数据处理与应用”、“算法与程序实现”三部分。“算法与程序实现”占据了重要的一部分内容。编程在高中信息技术学业水平考试中所占分值也比较高,且难度相对较大,尤其是最后两道编程大题。从某种程度上说,学生能不能学好“算法与程序实现”这部分内容,成为他们能不能拿到A等级的关键。因此,信息技术教师要想在有限的时间内取得更多的合格率和优良率,必须重视编程教学。
高中学生学业任务重,时间紧,能用来学习信息技术的时间更是少之又少。在时间紧、任务重、头绪杂的情况下,“算法与程序实现”到底需要教哪些内容才能算完成了教学任务,学生才能在考场上顺利应对编程题呢?我们下面进行简单分析。
目前,五个版本的高中信息技术教材都选用python进行教学,原因如下:
1.Python是最容易学习的语言之一;
2.Python是编程效率很高的语言,如果一个程序用C++实现,需要几十行的话,那么用python可能只需要十几行;
3.python是近年来非常火爆的语言,在人工智能、深度学习、模式识别、网站建设、数据分析、儿童教育、工业自动化、物联网等众多领域,都可以看到python的身影。
今天我们以一道题为例,为大家进行剖析python编程的教学内容。
题目内容描述如下:
复旦大学2021年的强基计划体质测试方案已公布,对男生引体向上和女生的仰卧起坐评分表如下:
1.男生引体向上单项评分表(单位:次)
2.女生一分钟仰卧起坐单项评分表(单位:次)
除此之外,体质测试方案中还对以上两个单项设置了加分项,具体的加分规则如下表:加分指标评分表
3.男生引体向上评分表(单位:次)
加分 10 9 8 7 6 5 4 3 2 1
男生测试结果 28 27 26 25 24 23 22 21 20 19
4.女生一分钟仰卧起坐评分表(单位:次)
加分 10 9 8 7 6 5 4 3 2 1
女生测试结果 68 67 66 65 64 63 62 61 59 57
现在,小王写了一个程序,实现该部分的自动分数统计,程序功能为:输入多名考生考号、测试结果,输出每名考生此单项得分。(以加分项表格为例进行编程)
输入如下:
5
001 1 26
002 1 19
003 1 23
004 0 68
005 0 64
其中第一行5,表示有5名考生,下面的每一行数据(如第二行),第一个数“001”是考生的考号,第二个数“1”是性别(1代表男性,0代表女性),第三个数26是该名男生引体向上测试结果为26个。
输出如下:
001 8
002 1
003 5
004 10
005 6
看完这道题的描述,我们可以了解到,该题数据源于生活中的真实情境,这与新课程改革的要求一致,与深度学习的理论吻合,培养学生的核心素养。这样的真实情境与高中生的升学息息相关,具有一定的导向作用,能够引起学生的注意和兴趣。
该题题面文字多,信息量大,单是看完题目就得花些时间。再加上时间限制,很容易导致学生紧张,头脑一片空白。通过静下心来分析,我们可以得知,这道题是给出各项得分数据,然后动态给出人数和每人的编号、性别、个数等信息,统计出每个人的得分情况。
代码参考:
def male(a):
maledict={28:10,27:9,26:8,25:7,24:6,23:5,22:4,21:3,20:2,19:1}
sc=maledict[a]
return sc
def female(a):
femaledict={68:10,67:9,66:8,65:7,64:6,63:5,62:4,61:3,59:2,57:1}
sc=femaledict[a]
return sc
n=eval(input())
for i in range (n):
s=input().split()
bh=_____ #此处应该填写s[0]
gender=int(s[1])
cs=int(s[2])
if gender==_____:#此处应该填写0
score=_____#此处应该填写female(cs)
print(bh,score)
else:
score=_____#此处应该填写male(cs)
print(bh,score)
在以上的代码中,有几个问题需要说明。
“_____”是我们需要填写的内容,#后面是我们写好的答案。在上面的代码中,
def male(a):
定义一个函数,这个函数的功能是通过男生引体向上个数,转化为具体得分。这样就可以通过男生引体向上个数这个参数转化为对应分数了。
maledict={28:10,27:9,26:8,25:7,24:6,23:5,22:4,21:3,20:2,19:1}
maledict相当于是一个字典(dictionary),也可以认为是一种哈希(或者散列),就是把一个值映射成另外一个值,在上面的代码中maledict[28]的值是10,maledict[26]对应的值是8,以此类推。这相当于c++中的map。具体可以参考python 字典(dictionary)的使用方法。
def female(a):
同理,这个函数的功能是通过女生仰卧起坐个数,转化为具体得分。这样就可以通过女生仰卧起坐个数这个参数转化为对应分数了。
sc=femaledict[a]
通过个数获得得分,赋值给变量sc
return sc
函数返回得分
s=input().split()
把输入的数据,比如001 1 26通过空格分开,这样可以分成三个数据,分别表示编号,性别和个数(编号是001,男生,引体向上26个),我们在python编程中经常会使用input().split()来实现一行上有多个数据使用空格隔开的情况,实现数据的分离,然后再进行下一步的运算或处理,需要强调的是分离出来的数据是字符或者字符串类型。
gender=int(s[1])
默认是字符型或者字符串类型,需要转化为整数后再进行运算。
通过对这一个程序的阅读解析,我们可以知道以下信息:
1.“算法与程序实现”这部分内容的教学,我们采用的是python语言进行教学;
2.需要教给学生数据读入的方法,有以下几种情况:共一行一个数据;每行一个数据,有若干行;共一行,在一行上有若干个数据;每行有多个数据,有若干行数据;
(1)共一行一个数据:使用input()读入即可,注意数据类型的转化;
(2)每行一个数据,有若干行:可以使用多个input()读入数据,一般使用循环结构读入,具体看试题描述来选择;
(3)共一行,在一行上有若干个数据:一般使用input().split()来实现,在python语言中,input()会读入在一行上的所有数据,并且是一个字符串,split函数是字符串处理的函数,它的功能是分离字符串,默认是以空格做为分隔符。需要强调的是,split分离出来的一个个数字还是字符串类型,在进行科学运算时,需要使用强制类型转换,把字符串类型的数字转化成int、float等数据类型后进行运算。
(4)每行有多个数据,有若干行数据:每行的处理方法同(3),这种情况下的多行数据的读入一般使用循环结构来实现。
3.分支结构程序设计,掌握if elif else的使用方法;
4.for循环的使用方法;当然,while循环也需要掌握;
5.会使用def定义函数;
6.字典(dictionary)的使用,列表(list)的使用(包括添加数据append、取出元素)、从这些内容我们还可以引申出学生需要掌握元组等其它简单结构的使用方法;
7.python语言中基本的逻辑表达式,包括使用了>、<、>=、<=、==、!=、以及and(与)、or(或)、not(非)的逻辑运算;
8.python语言中基本的加、减、乘、除、取余、整除等运算;
9.python语言的输出使用print(),这里我需要强调几点:
(1)一个是多个变量在一行同时输出,比如有三个变量a,b,c想在一行上输出,我们可以使用print(a,b,c)来实现;如果这三个变量想在三行输出,我们可以用三行,写三句print()来实现,比如print(a),print(b),print(c)来实现;
(2)另一种情况是我们在循环结构中使用了同一个变量i,想在一行上输出,中间用空格隔开,我们可以使用print(i,end=’ ’)来输出,比如,我们想把1到10在一行上输出出来,可以这样做:for i in range(1,11):print((i,end=’ ’),当然在这种情况下,我们也可以使用print(i,end=’\n’)来实现每行输出一个变量值目的,代码中’\n’的意思就是换行,因此end=’’的作用是根据单引号中的内容来实现对输出格式的控制;
(3)第三种情况是输出时对浮点数的精度控制(保留几位小数),比如输出的时候如果想保留2位小数,可以使用print(‘%.2f’%a)的形式。
在以上的讲解过程中,我使用了很多文字在介绍输入和输出,这说明,一个完整的程序输入和输出是必不可少的,它是我们编写的程序是不是正确的前提。当然,在编程教学过程中,最核心的是通过问题的解决,来达到培养学生的计算思维能力的目的。读入数据后,使用相应的算法处理问题更是关键所在,比如在上面例题中讲到的使用函数来处理问题,这是模块化编程的思想;在函数中使用了python的字典来实现个数与分数的对应,在主程序中使用if.....else来实现对男女生的单独处理,使用s[0]、s[1]、s[2]取出字符串中的每一位,使用循环结构来实现对每名学生都用这样的方法来处理……,一段小小的程序代码把“模拟策略”运用的淋漓尽致。
例题讲解完成后,我们还可以反问学生,如果让我们处理《男生引体向上单项评分表》和《女生一分钟仰卧起坐单项评分表》中的数据来实现“输入多名考生考号、测试结果,输出每名考生此单项得分”又该如何做呢?这些问题的解决,在潜移默化中无不蕴含着对学生计算思维能力的培养。
从上面的分析我们可以得出结论,单从教学内容方面来看,基于python的高中信息技术编程教学并不算难。
同课章节目录