深耕专业教研,探索前沿技术
信息技术来源:2025学年第二学期精诚联盟高三适应性联考

第 13 题

答案与解析

第(1)小题

参考答案

1

先筛选负荷率不高于70%的充电站:编号1的负荷率为65%,编号3的负荷率为50%,两者符合条件。再比较距离,编号1距离为5千米,编号3为15千米,因此推荐编号1。编号3虽然负荷率更低,但存在合格充电站时应按距离选择。

第(2)小题

参考答案
  1. d[i][1]<=70 and (id==-1 or d[i][2]<mdis)

  2. id!=-1

  3. d[m][0]

程序分析

mdis=10000
id=-1; m=0
for i in range(len(d)):
    if ①:
        ...
    if d[i][1]<d[m][1]:
        ...

二维列表d的每行保存一个充电站,三列依次为编号、负荷率和距离,且各行已按编号升序排列。循环用下标i逐行检查数据,两个if独立执行,同一行可能同时满足两个条件。

if ①:
    id=d[i][0]
    mdis=d[i][2]

①成立时,id保存当前充电站的编号,mdis保存同一充电站的距离,两者随候选站一起更新。id的初值为−1,可用来区分是否发生过候选站更新;mdis初值为10000。

if d[i][1]<d[m][1]:
    m=i

m从0开始。只有当前充电站的负荷率更低时,才将其下标i赋给m,因此m始终指向已检查充电站中负荷率最低的一个。负荷率相等时不更新;由于按编号升序检查,保留下来的就是同负荷率中编号最小的站。

if ②:
    print("距离最近的是",id,"号充电站")
else:
    print("负载最低的是",③,"号充电站")

遍历结束后,程序需要按题意选择输出分支:存在负荷率不高于70%的充电站时,输出按距离选出的站;否则输出负荷率最低的站。前一分支直接输出id,后一分支需要由m找到对应编号。

填空分析

①

候选站首先必须满足d[i][1]<=70。在此基础上,若尚未找到合格站,应直接接纳;若已有候选站,则仅在当前距离更小时更新。因此填入:

d[i][1]<=70 and (id==-1 or d[i][2]<mdis)

距离比较使用严格小于。距离相等时保留先遇到的站,结合编号升序遍历,即可保证选择编号最小者。外层的负荷条件必须始终成立,不能写成id==-1 or (负荷条件 and 距离条件),否则第一个高负荷站也会被接纳。

若所有距离均小于10000,可简写为d[i][1]<=70 and d[i][2]<mdis;题面未给出这个距离上界,上述写法通过id==-1处理首次接纳,距离达到或超过10000时也能正确选择。

②

按①的条件,只有负荷率不高于70%的站才会更新id。因此id!=-1表示至少找到一个合格站,应输出id;id仍为−1则表示所有站的负荷率均高于70%,应进入else分支。填入:

id!=-1

③

m保存的是负荷率最低站在列表中的下标,d[m][0]才是该站的编号。编号升序不代表编号一定等于下标,因此填入:

d[m][0]