阶段核心素养测评卷(二)(含答案) 2025-2026学年高中信息技术 必修1 数据与计算

资源下载
  1. 二一教育资源

阶段核心素养测评卷(二)(含答案) 2025-2026学年高中信息技术 必修1 数据与计算

资源简介

(共30张PPT)
阶段核心素养测评卷(二)
信息技术 必修1 数据与计算
一、 选择题(本大题共12小题,每小题2分,共24分。在每小题给出的四个选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 下列关于数据、信息和知识的说法,错.误.的是(  )
A. 信息自古就有,但数据是计算机出现以后才有的
B. 通过归纳、演绎、比较等手段对信息进行处理形成知识
C. 数据包含的意义就是信息,信息一定有载体
D. 我们每天都在产生数据
【解析】 本题考查数据、信息和知识的概念。数据自古就有,例如结绳记事。A错误。
A
2. 下列关于信息特征的说法,正确的是(  )
A. 信息是不可以进行加工和处理的
B. 信息在共享的过程中会产生损耗
C. 信息具有载体依附性,但有一部分信息可能没有载体
D. 信息的价值具有相对性,不同的人群和不同的时间,价值可能不同
【解析】 本题考查信息特征。信息的价值具有相对性,D正确。
D
3. 下列选项中,数值最大的是(  )
A. 5BH B. 10110100B
C. 180D D. B5H
【解析】 本题考查进制转换知识,将三种不同进制统一转换为十进制后可以比较大小。
D
4. 下列关于数据安全的说法,错.误.的是(  )
A. 为了避免自然灾害引起的数据损坏,一般可建立异地容灾系统
B. 将银行卡号和密码等个人重要信息备份在网盘中肯定是安全的
C. 安装防火墙和杀毒软件,是为了保障数据安全
D. 数据校验是为保证数据的完整性而进行的一种验证操作
【解析】 本题考查数据安全知识。网盘也存在密码被破解的风险,B错误。
B
5. 如图所示为某算法的部分流程图:
执行该流程后,变量sum,i的值分别是(  )
A. 14 4 B. 14 5
C. 17 4 D. 31 4
B
【解析】 本题考查流程图的相关知识。经过模拟可知,流程图的执行过程如下表所示:
sum=0 0 8 8 14 14
i=0 1 2 3 4 5
s=36589 3658 365 36 3 0
因此sum的值为14,i的值为5。
6.下列关于信息编码的说法,正确的是(  )
A. 汉字在计算机内部是以十六进制编码的
B. 声音的数字化需经过采样、离散化和编码三个步骤
C. 删除二进制数的最后一位,其值会变成原数的1/2
D. 在二进制编码中,n位二进制数最多能表示2n种状态
【解析】 本题考查声音编码、量化位数、进制转换。 汉字在计算机内部是以二进制编码的,A错误;声音的数字化需经过采样、量化和编码三个步骤,B错误;删除二进制数的最后一位时,若最后一位是0,则其值会变成原数的1/2,若为1,则其值会变成原数的1/2减0.5,C错误;在二进制编码中,n位二进制数最多能表示2n种状态,D正确。
D
7. 下列关于大数据的说法,错.误.的是(  )
A. 大数据处理通常采用分治策略,以应对海量数据的挑战
B. 大数据具有数据规模大、处理速度快、数据类型多、价值密度高特点
C. 大数据让生活更便利的同时,也带来了新的社会问题
D. 大数据不再追求数据的精确性,而是接受数据的混杂性
【解析】 本题考查大数据知识。大数据的价值密度低,B错误。
B
8.下列对人工智能的认识,正确的是(  )
A. 机器学习不属于人工智能研究的基本内容
B. 人工智能促进经济发展,不会对劳动力市场产生影响
C. 人工智能以机器为载体,模仿、延伸和扩展人类智能
D. 跨领域人工智能开展深度推理时无须依赖已有数据和已有规则
【解析】 本题考查人工智能知识。人工智能以机器为载体,模仿、延伸和扩展人类智能。
C
9. 有如下 Python 程序段:
a=[3,5,2,4,1]
s=m=a[0]
for i in range(1,len(a)):
  if a[i]    m=a[i]
  s+=m
执行该程序后,s的值为(  )
A. 6 B. 9
C. 11 D. 15
【解析】 本题考查字符串数组知识。本程序的功能是每次将a[i]与m中的较小值累加到变量s中,因此s=3+3+2+2+1=11。
C
10. 用Python算法控制结构描述“音量低于30分贝表示安静,30~50分贝表示交谈,高于50分贝表示吵闹”。设音量为t(单位为分贝),环境状态为s,下列程序段中,不.符.合.要求的
是(  )
A. if t >50:    s="吵闹" elif t >=30:   s="交谈" s="安静" B. if t >50:   s="吵闹" elif t>=30:   s="交谈" else:   s="安静" C. if t >50:   s="吵闹" else:   if t >=30:     s="交谈"   else:     s="安静" D. if t <30:
  s="安静"
elif t<=50:
  s="交谈"
else:
  s="吵闹"
【解析】 本题考查分支语句。A无论t的值是多少,最后s的值都是“安静”,A错误。
A
11. 有如下Python程序段:
s=input("请输入要处理的数据:")
t=0;sum=0
for i in s:
  if "0"<=i<="9":
    t=t*10+int(i)
  elif "A"<=i<="Z":
    sum+=t
  else:
    t=0
print(sum)
若输入的数据为“12A34y56D”,则输出的内容为(  )
A. 102 B. 68
C. 46 D. 12
B
【解析】 本题考查Python循环及选择语句。阅读程序可知,依次读取字符串s,若是数字字符,则转换为数值,如果是大写字母,则将t累加到s中,如果是其他字符,则将t置为0。若输入的数据为“12A34y56D”,12转换为数值,下一个字符为A,故sum+=t后,sum=12,34后面没有大写字母,不累加到s中,故最后s的值为12+56=68。
12. 有如下Python程序段:
s="6p25y3t"
sum=t=0
flag=True
for ch in s:
  if "0"<=ch<="9":
    t=t*10+int(ch)
  else:
    if flag==True:
      sum+=t
    t=0
    flag = not flag
执行该程序段后,变量sum的值为(  )
A. 6 B. 9 C. 28 D. 34
B
【解析】 本题考查Python的综合应用。阅读程序可知,程序逐个读取字符串中的字符,若是数字,则将其转换为数值类型;若是字符,则清空t,标志位flag取反;若是字符且标志位flag为真,则将数字累加到sum。s="6p25y3t",读取到第一个数字是6,flag为真,将数字累加到sum=6;读取到第一个非数字p,标志位flag取反后为假;读取到第二个数25,由于flag为假,不将数字累加到sum;读取到第二个非数字y,标志位flag取反后为真;读取到第三个数字是3,flag为真,将数字累加到sum=6+3=9。
二、非选择题(本大题共3小题,其中第13题9分,第14题9分,第15题8分,共26分)
13. 系统管理员获取到了某次考试的成绩数据,存储在“学生成绩.xlsx”文件中,现在数据管理员需要先对数据进行处理,将初步处理结果上传到服务器,其数据格式如图1所示。
图1
(1)在数据处理过程中,需要先对数据集中的数据进行整理,下列说法中,正确的是__________(多选,填字母)(2分)。
A. D3单元格数据缺失,可用任意值填充
B. G2单元格存在逻辑错误数据,需要进行修改
C. 第6,7行为重复数据,直接删除其中一行记录
D. 第11行存在异常数据,需要先分析再处理
BD
(2)成绩管理系统需要显示排名前30的学生数据和班级对比图,因此小李需要对整理好的数据进行初步处理,将年级排名前30的学生数据存储在data变量中,同时绘制各班级总分平均分对比柱形图,如图2所示。小李通过Python进行处理,实现上述功能的Python程序如下,请在横线上填入合适的代码:①_______________________(3分),②__________
(2分),③__________(2分)。
图2
"总分",ascending=False
mean()
g.index
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]
df=pd.read_excel("学生成绩.xlsx")
data=df.sort_values(  ①  ).head(30)
df=df.groupby("班级")
g=df.总分.  ②  
x=  ③  
y=g.values
plt.figure(figsize=(30,6))
plt.bar(x,y,label="班级总分平均分")
plt.title("各班级平均分对比")
plt.xlabel("班级")
plt.ylabel("平均分")
plt.ylim(0,750)
plt.xlim(1,10)
plt.legend()
plt.show()
【解析】 (1)数据缺失不能使用任意值填充;逻辑错误的数据需要修改;重复数据需要进一步审核后合并、删除;异常数据需要先分析再处理。B、D正确。
(2)①处需要按照总分进行降序排列,所以填"总分",ascending=False;②处是按班级分组后求班级总分的平均分,所以填mean();③根据图表可知,横轴数据集应为班级号,所以填g.index。
14. 某班期中考试成绩出来了,老师需要将成绩按从高到低的顺序进行排列。打算利用两两比较法进行排序,算法思想如下:将全班n名同学的成绩进行两两比较,若某同学的成绩比其他同学的低,则将其对应的排名的名次数组元素mc加1(最初假设成绩都是第一名),反之则给对方的mc元素加1。最后将成绩数据降序输出,实现上述功能的Python程序代码如下,运行界面如图所示。请回答下列问题:
(1)利用该排序思想,若成绩数据为“81,90,99,60,55”,则成绩81的名次为第______(填数字)名(2分)。
3
(2)请在横线上填入合适的代码:①__________(2分),②_______________(2分),
③___________________________(3分)。
# 将全班的原始成绩数据存入数组d,代码略
print("原始成绩为:")
print(d)
n=len(d)
mc = [0] * n
for i in range(n):
  for j in range(i+1,n):
    if   ①  :
      mc[i] += 1
    else:
        ②  
print("降序排列后:")
for i in range(n):
  for j in range(n):
    if   ③  :
      print(d[j],end=" ")
d[i]< d[j]
mc[j] += 1
mc[j]==i 或i==mc[j]
【解析】 (1)根据题意可知,成绩81只比90和99小,原来假设排名第1(数值为0),加上2后排名即为第3。
(2)本题考查比较数组d中值的大小的方法,利用名次数组mc进行降序排序。由算法思想可知,若比对方小,自身对应的名次数组mc加1,否则对方的名次数组mc加1。名次数组的初值全部为0(排名第一),若程序结束后,其对应的值越大,则说明排名越靠后,最大的数对应的mc值为0。在最后的循环中,将对名次数组mc中的数据进行降序输出,mc[j]是名次数组的值,值越小表示排名越高,而j是其在数组d中对应的索引号。输出时,按照名次值从小到大(成绩数据从大到小)的顺序进行输出。
15. 简易阅卷系统。
为了检测学生的学习效果,王老师要开展一次课堂测试。
图1
图2
她设计了一份试卷,共8道题,其中单选题6道,多选题2道,总分100分。学生做完题目后上交答卷,答卷中的答案存储在“学生答卷.txt”文件中(答卷中均是大写字母,且多选题答案已按字母升序排列,格式如图1所示)。王老师通过编程读取全班学生的答卷,实现自动批阅,
并统计每名学生的得分情况,最终输出每名学生的得分和满分学生名单(如图2所示)。各类题型的阅卷规则如下:
单选题:学生答案和标准答案一致,每题得10分;错选或不选均不给分。
多选题:学生答案和标准答案一致,每题得20分;漏选给10分,错选或不选均不给分。比如某题标准答案为ACD,答ACD可以得20分,答A,C,D,AC,AD或CD可得10分,其余不得分。
(1)主程序
da=["A","B","A","D","C","D","ACD","BD"] #da存放标准答案
file="学生答卷.txt"
ts=readfile(file) #读取学生答案内容
a=[ ] #用于存放满分同学的姓名
for i in range(len(ts)):
  line=ts[i]
  ls=ls.split(",") #将ls按“,”分割,以列表形式存储
  ls=line.strip()  #过滤掉换行符’\n’
  s=score(ls,da)
  print(ls[0]+"得分:"+str(s))
  if s==100:
    a.append(ls[0])
print("满分同学:",end="")
for i in a:
  print(i,end=" ")
该程序段采用的算法是__________(单选,填字母)(2分)。
A. 解析算法 B. 枚举算法
B
(2)读写文本文件。如下的readfile函数用于逐行读取每名学生的答题数据并将其存入列
表后返回。请在横线上填入合适的代码:__________(2分)。
def readfile(file):
  f=open(file,encoding="utf-8") #打开文件
       
  line= f.readline() #从文件中读取一行
  while line:
    text.append(line) #添加到列表text
    line=f.readline()
  f.close()
  return text
text=[]
(3)如下的dxt函数用于判断多选题答案并返回得分。请在横线上填入合适的代
码:__________(2分)。
def dxt(s1,s2):
  n1=len(s1);n2=len(s2)
  fs=0;c=0;k=0
  if s1==s2:
    fs=20
  else:
    while k      if s1[k] in s2:
        c+=1
      else:
        break
      k+=1
    if k==n1 and c!=n2:
          
  return fs
fs=10
(4)如下的score函数,统计每名学生的得分并返回。请在横线上填入合适的代
码:_____________________________(2分)。
def score(st,da):
  sum1=0
  for j in range(1,len(st)):
    if j<=6:
      if st[j]==da[j-1]:
        sum1+=10
    else:
          
  return sum1
sum1+=dxt(st[j],da[j-1])
【解析】 本题综合考查利用Python统计分数。
(1)该程序段利用循环,然后使用if语句进行判断,满足条件的数据才添加到列表a中,故属于枚举算法。(2)由代码“text.append(line)”以及函数返回值text可知,此处需要将列表text进行初始化。(3)此处需要解决的问题是在多选题不是全对的情况下,漏选得到10分的情景,一个条件是答案长度小于标准答案,且有部分选项正确,其中c表示正确的选项数量,k是答案选项的数量。因此答案是fs=10。(4)该分支用于计算多选题的得分情况,总分存放在变量sum1中,因此此处累加时需要进行累加,且调用dxt函数,计算多选题得分,故表达式是sum1+=dxt(st[j],da[j-1]) 这里需要注意的是,st的下标和标准答案da之间的下标相差1。阶段核心素养测评卷(二)
一、 选择题(本大题共12小题,每小题2分,共24分。在每小题给出的四个选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 下列关于数据、信息和知识的说法,错误的是( A )
A. 信息自古就有,但数据是计算机出现以后才有的
B. 通过归纳、演绎、比较等手段对信息进行处理形成知识
C. 数据包含的意义就是信息,信息一定有载体
D. 我们每天都在产生数据
【解析】 本题考查数据、信息和知识的概念。数据自古就有,例如结绳记事。A错误。
2. 下列关于信息特征的说法,正确的是( D )
A. 信息是不可以进行加工和处理的
B. 信息在共享的过程中会产生损耗
C. 信息具有载体依附性,但有一部分信息可能没有载体
D. 信息的价值具有相对性,不同的人群和不同的时间,价值可能不同
【解析】 本题考查信息特征。信息的价值具有相对性,D正确。
3. 下列选项中,数值最大的是( D )
A. 5BH B. 10110100B
C. 180D D. B5H
【解析】 本题考查进制转换知识,将三种不同进制统一转换为十进制后可以比较大小。
4. 下列关于数据安全的说法,错误的是( B )
A. 为了避免自然灾害引起的数据损坏,一般可建立异地容灾系统
B. 将银行卡号和密码等个人重要信息备份在网盘中肯定是安全的
C. 安装防火墙和杀毒软件,是为了保障数据安全
D. 数据校验是为保证数据的完整性而进行的一种验证操作
【解析】 本题考查数据安全知识。网盘也存在密码被破解的风险,B错误。
5. 如图所示为某算法的部分流程图:
第5题图
执行该流程后,变量sum,i的值分别是( B )
A. 14 4 B. 14 5
C. 17 4 D. 31 4
【解析】 本题考查流程图的相关知识。经过模拟可知,流程图的执行过程如下表所示:
sum=0 0 8 8 14 14
i=0 1 2 3 4 5
s=36589 3658 365 36 3 0
因此sum的值为14,i的值为5。
6. 下列关于信息编码的说法,正确的是( D )
A. 汉字在计算机内部是以十六进制编码的
B. 声音的数字化需经过采样、离散化和编码三个步骤
C. 删除二进制数的最后一位,其值会变成原数的1/2
D. 在二进制编码中,n位二进制数最多能表示2n种状态
【解析】 本题考查声音编码、量化位数、进制转换。 汉字在计算机内部是以二进制编码的,A错误;声音的数字化需经过采样、量化和编码三个步骤,B错误;删除二进制数的最后一位时,若最后一位是0,则其值会变成原数的1/2,若为1,则其值会变成原数的1/2减0.5,C错误;在二进制编码中,n位二进制数最多能表示2n种状态,D正确。
7. 下列关于大数据的说法,错误的是( B )
A. 大数据处理通常采用分治策略,以应对海量数据的挑战
B. 大数据具有数据规模大、处理速度快、数据类型多、价值密度高等特点
C. 大数据让生活更便利的同时,也带来了新的社会问题
D. 大数据不再追求数据的精确性,而是接受数据的混杂性
【解析】 本题考查大数据知识。大数据的价值密度低,B错误。
8. 下列对人工智能的认识,正确的是( C )
A. 机器学习不属于人工智能研究的基本内容
B. 人工智能促进经济发展,不会对劳动力市场产生影响
C. 人工智能以机器为载体,模仿、延伸和扩展人类智能
D. 跨领域人工智能开展深度推理时无须依赖已有数据和已有规则
【解析】 本题考查人工智能知识。人工智能以机器为载体,模仿、延伸和扩展人类智能。
9. 有如下 Python 程序段:
a=[3,5,2,4,1]
s=m=a[0]
for i in range(1,len(a)):
  if a[i]    m=a[i]
  s+=m
执行该程序后,s的值为( C )
A. 6 B. 9
C. 11 D. 15
【解析】 本题考查字符串数组知识。本程序的功能是每次将a[i]与m中的较小值累加到变量s中,因此s=3+3+2+2+1=11。
10. 用Python算法控制结构描述“音量低于30分贝表示安静,30~50分贝表示交谈,高于50分贝表示吵闹”。设音量为t(单位为分贝),环境状态为s,下列程序段中,不符合要求的是( A )
A. if t >50:    s="吵闹" elif t >=30:   s="交谈" s="安静" B. if t >50:   s="吵闹" elif t>=30:   s="交谈" else:   s="安静" C. if t >50:   s="吵闹" else:   if t >=30:     s="交谈"   else:     s="安静" D. if t <30:   s="安静" elif t<=50:   s="交谈" else:   s="吵闹"
【解析】 本题考查分支语句。A无论t的值是多少,最后s的值都是“安静”,A错误。
11. 有如下Python程序段:
s=input("请输入要处理的数据:")
t=0;sum=0
for i in s:
  if "0"<=i<="9":
    t=t*10+int(i)
  elif "A"<=i<="Z":
    sum+=t
  else:
    t=0
print(sum)
若输入的数据为“12A34y56D”,则输出的内容为( B )
A. 102 B. 68
C. 46 D. 12
【解析】 本题考查Python循环及选择语句。阅读程序可知,依次读取字符串s,若是数字字符,则转换为数值,如果是大写字母,则将t累加到s中,如果是其他字符,则将t置为0。若输入的数据为“12A34y56D”,12转换为数值,下一个字符为A,故sum+=t后,sum=12,34后面没有大写字母,不累加到s中,故最后s的值为12+56=68。
12. 有如下Python程序段:
s="6p25y3t"
sum=t=0
flag=True
for ch in s:
  if "0"<=ch<="9":
    t=t*10+int(ch)
  else:
    if flag==True:
      sum+=t
    t=0
    flag = not flag
执行该程序段后,变量sum的值为( B )
A. 6 B. 9
C. 28 D. 34
【解析】 本题考查Python的综合应用。阅读程序可知,程序逐个读取字符串中的字符,若是数字,则将其转换为数值类型;若是字符,则清空t,标志位flag取反;若是字符且标志位flag为真,则将数字累加到sum。s="6p25y3t",读取到第一个数字是6,flag为真,将数字累加到sum=6;读取到第一个非数字p,标志位flag取反后为假;读取到第二个数25,由于flag为假,不将数字累加到sum;读取到第二个非数字y,标志位flag取反后为真;读取到第三个数字是3,flag为真,将数字累加到sum=6+3=9。
[答题区]
序号 1 2 3 4 5 6 7 8 9 10 11 12
答案 A D D B B D B C C A B B
二、非选择题(本大题共3小题,其中第13题9分,第14题9分,第15题8分,共26分)
13. 系统管理员获取到了某次考试的成绩数据,存储在“学生成绩.xlsx”文件中,现在数据管理员需要先对数据进行处理,将初步处理结果上传到服务器,其数据格式如图1所示。
第13题图1
(1)在数据处理过程中,需要先对数据集中的数据进行整理,下列说法中,正确的是 BD (多选,填字母)(2分)。
A. D3单元格数据缺失,可用任意值填充
B. G2单元格存在逻辑错误数据,需要进行修改
C. 第6,7行为重复数据,直接删除其中一行记录
D. 第11行存在异常数据,需要先分析再处理
(2)成绩管理系统需要显示排名前30的学生数据和班级对比图,因此小李需要对整理好的数据进行初步处理,将年级排名前30的学生数据存储在data变量中,同时绘制各班级总分平均分对比柱形图,如图2所示。小李通过Python进行处理,实现上述功能的Python程序如下,请在横线上填入合适的代码:
① "总分",ascending=False (3分),② mean() (2分),③ g.index 
(2分)。
第13题图2
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]
df=pd.read_excel("学生成绩.xlsx")
data=df.sort_values(  ①  ).head(30)
df=df.groupby("班级")
g=df.总分.  ②  
x=  ③  
y=g.values
plt.figure(figsize=(30,6))
plt.bar(x,y,label="班级总分平均分")
plt.title("各班级平均分对比")
plt.xlabel("班级")
plt.ylabel("平均分")
plt.ylim(0,750)
plt.xlim(1,10)
plt.legend()
plt.show()
【解析】 (1)数据缺失不能使用任意值填充;逻辑错误的数据需要修改;重复数据需要进一步审核后合并、删除;异常数据需要先分析再处理。B、D正确。
(2)①处需要按照总分进行降序排列,所以填"总分",ascending=False;②处是按班级分组后求班级总分的平均分,所以填mean();③根据图表可知,横轴数据集应为班级号,所以填g.index。
14. 某班期中考试成绩出来了,老师需要将成绩按从高到低的顺序进行排列。打算利用两两比较法进行排序,算法思想如下:将全班n名同学的成绩进行两两比较,若某同学的成绩比其他同学的低,则将其对应的排名的名次数组元素mc加1(最初假设成绩都是第一名),反之则给对方的mc元素加1。最后将成绩数据降序输出,实现上述功能的Python程序代码如下,运行界面如图所示。请回答下列问题:
第14题图
(1)利用该排序思想,若成绩数据为“81,90,99,60,55”,则成绩81的名次为第
 3 (填数字)名(2分)。
(2)请在横线上填入合适的代码:① d[i]< d[j] (2分),② mc[j] += 1 (2分),③ mc[j]==i 或i==mc[j] (3分)。
# 将全班的原始成绩数据存入数组d,代码略
print("原始成绩为:")
print(d)
n=len(d)
mc = [0] * n
for i in range(n):
  for j in range(i+1,n):
    if   ①  :
      mc[i] += 1
    else:
        ②  
print("降序排列后:")
for i in range(n):
  for j in range(n):
    if   ③  :
      print(d[j],end=" ")
【解析】 (1)根据题意可知,成绩81只比90和99小,原来假设排名第1(数值为0),加上2后排名即为第3。
(2)本题考查比较数组d中值的大小的方法,利用名次数组mc进行降序排序。由算法思想可知,若比对方小,自身对应的名次数组mc加1,否则对方的名次数组mc加1。名次数组的初值全部为0(排名第一),若程序结束后,其对应的值越大,则说明排名越靠后,最大的数对应的mc值为0。在最后的循环中,将对名次数组mc中的数据进行降序输出,mc[j]是名次数组的值,值越小表示排名越高,而j是其在数组d中对应的索引号。输出时,按照名次值从小到大(成绩数据从大到小)的顺序进行输出。
15. 简易阅卷系统。
为了检测学生的学习效果,王老师要开展一次课堂测试。她设计了一份试卷,共8道题,其中单选题6道,多选题2道,总分100分。学生做完题目后上交答卷,答卷中的答案存储在“学生答卷.txt”文件中(答卷中均是大写字母,且多选题答案已按字母升序排列,格式如图1所示)。王老师通过编程读取全班学生的答卷,实现自动批阅,并统计每名学生的得分情况,最终输出每名学生的得分和满分学生名单(如图2所示)。
第15题图1
第15题图2
各类题型的阅卷规则如下:
单选题:学生答案和标准答案一致,每题得10分;错选或不选均不给分。
多选题:学生答案和标准答案一致,每题得20分;漏选给10分,错选或不选均不给分。比如某题标准答案为ACD,答ACD可以得20分,答A,C,D,AC,AD或CD可得10分,其余不得分。
(1)主程序
da=["A","B","A","D","C","D","ACD","BD"] #da存放标准答案
file="学生答卷.txt"
ts=readfile(file) #读取学生答案内容
a=[ ] #用于存放满分同学的姓名
for i in range(len(ts)):
  line=ts[i]
  ls=ls.split(",") #将ls按“,”分割,以列表形式存储
  ls=line.strip()  #过滤掉换行符’\n’
  s=score(ls,da)
  print(ls[0]+"得分:"+str(s))
  if s==100:
    a.append(ls[0])
print("满分同学:",end="")
for i in a:
  print(i,end=" ")
该程序段采用的算法是 B (单选,填字母)(2分)。
A. 解析算法 B. 枚举算法
(2)读写文本文件。如下的readfile函数用于逐行读取每名学生的答题数据并将其存入列表后返回。请在横线上填入合适的代码: text=[] (2分)。
def readfile(file):
  f=open(file,encoding="utf-8") #打开文件
       
  line= f.readline() #从文件中读取一行
  while line:
    text.append(line) #添加到列表text
    line=f.readline()
  f.close()
  return text
(3)如下的dxt函数用于判断多选题答案并返回得分。请在横线上填入合适的代码: fs=10 (2分)。
def dxt(s1,s2):
  n1=len(s1);n2=len(s2)
  fs=0;c=0;k=0
  if s1==s2:
    fs=20
  else:
    while k      if s1[k] in s2:
        c+=1
      else:
        break
      k+=1
    if k==n1 and c!=n2:
          
  return fs
(4)如下的score函数,统计每名学生的得分并返回。请在横线上填入合适的代码:
 sum1+=dxt(st[j],da[j-1]) (2分)。
def score(st,da):
  sum1=0
  for j in range(1,len(st)):
    if j<=6:
      if st[j]==da[j-1]:
        sum1+=10
    else:
          
  return sum1
【解析】 本题综合考查利用Python统计分数。
(1)该程序段利用循环,然后使用if语句进行判断,满足条件的数据才添加到列表a中,故属于枚举算法。(2)由代码“text.append(line)”以及函数返回值text可知,此处需要将列表text进行初始化。(3)此处需要解决的问题是在多选题不是全对的情况下,漏选得到10分的情景,一个条件是答案长度小于标准答案,且有部分选项正确,其中c表示正确的选项数量,k是答案选项的数量。因此答案是
fs=10。(4)该分支用于计算多选题的得分情况,总分存放在变量sum1中,因此此处累加时需要进行累加,且调用dxt函数,计算多选题得分,故表达式是
sum1+=dxt(st[j],da[j-1])这里需要注意的是,st的下标和标准答案da之间的下标相差1。

展开更多......

收起↑

资源列表