深耕专业教研,探索前沿技术
信息技术来源:浙江七校2026年普通高等学校招生全国统一考试模拟考试

第 14 题

答案与解析

第(1)小题

参考答案

1

乐跑新星要求50公里≤里程<60公里。表中已列出的学生只有陈*的58公里符合条件,60公里属于乐跑先锋。表中省略了部分学生,因此能确定获得乐跑新星的学生至少有1人。

第(2)小题

参考答案
  1. a[data[i][1]] += 1

  2. j >= star

  3. s = 0

程序分析

max_km = max([d[1] for d in data])  #计算最大里程
total = len(data)
master = 80                         #乐跑达人最低里程
star = 50                           #乐跑新星最低里程
for i in range(len(data)):
    ①

data中每个元素按[姓名,里程]存储,所以data[i][1]是第i个学生的月累计里程。max_km取得全班最大里程,total记录全班人数;for循环逐个访问学生记录。

s, j = 0, max_km
while ②:
    s += a[j]
    if j == master:
        master_rate = s / total * 100
        ③
        j = star + 10
    j -= 1
star_rate = s / total * 100

j从最大里程开始递减,每轮将a[j]累加到s;当j到达80时,用s除以全班人数计算达人占比。因此a[j]需要保存里程恰好为j公里的学生人数,s累加各里程对应的人数。图中已有90公里的记录,保证本题会经过j=80这一统计位置。

计算达人占比后,分支将j更新为star+10,即60;随后执行分支外的j -= 1,下一轮从59公里开始,跳过60~79公里的先锋区间。循环结束后,再用s计算新星占比。

填空分析

①

每读到一名学生,就应将其里程对应的人数增加1。当前学生的里程是data[i][1],对应的计数位置是a[data[i][1]],因此填写:

a[data[i][1]] += 1

计数前须将a初始化为长度至少为max_km+1、元素全为0的列表;题给片段未展示这一步。

②

新星的里程范围是50~59公里,j递减统计时必须包含50公里,减到49公里后停止。因此填写:

j >= star

star为50,也可写j >= 50。

③

执行到此处时,s已经累加了里程不低于80公里的人数,达人占比也已保存。接下来要单独累计新星人数,须先清除这部分累计值,因此填写:

s = 0