第 14 题
答案与解析
第(1)小题
2
适宜湿度范围为70±5,即[65,75]。每次用最近连续4次采集值判断:平均值在该范围内且最大值与最小值之差不超过5,才属于稳定状态。只有本次状态与上一次不同,才修改检测频率。
初始为稳定状态,7次数据可形成4组连续的4次采集窗口:
| 连续采集窗口 | 平均值 | 最大值−最小值 | 本次状态 | 是否调整频率 |
|---|---|---|---|---|
| 第1~4次:64,66,66,68 | 66 | 4 | 稳定 | 否,与初始状态相同 |
| 第2~5次:66,66,68,72 | 68 | 6 | 波动 | 是,1次/分钟→5次/分钟 |
| 第3~6次:66,68,72,68 | 68.5 | 6 | 波动 | 否,仍为5次/分钟 |
| 第4~7次:68,72,68,68 | 69 | 4 | 稳定 | 是,5次/分钟→1次/分钟 |
第5次、第7次采集后各调整一次,共2次。
第(2)小题
len(hum) - m + 1
bd <= T
state != pre_state
程序分析
m = 4 # 连续4次采集
s = 70 # 大棚适宜湿度值
T = 5 # 阈值
cnt = 0
pre_state = "1次/分钟(稳定状态)"
for i in range(0, len(hum) - 1): # ①加框处
...
print("调整检测频率次数:",cnt)m、s、T分别对应连续采集次数、适宜湿度值和阈值。外层循环用i依次选取一组数据的起始位置,循环内完成本组统计和频率判定;cnt初值为0,pre_state初值为稳定状态。
cur = hum[i : i + m]
tot = 0
for num in cur:
tot += num
avg = tot / len(cur)
bd = max(cur) - min(cur)cur保存从下标i开始、到i+m之前的湿度数据。每轮先将tot置0,再累加当前窗口内的数据,所以avg是本组平均湿度;bd由最大值减最小值得到,表示本组湿度波动。
if s - T <= avg <= s + T and ②:
state = "1次/分钟(稳定状态)"
else:
state = "5次/分钟(波动状态)"条件成立时,state取稳定状态对应的检测频率;否则取波动状态对应的检测频率。因此,state保存本轮的频率判定结果。已知条件检查平均值范围,空②与它通过and连接。
if ③:
cnt += 1
pre_state = state空③决定本轮是否将cnt加1。计数判断之后执行pre_state=state,把本轮结果留给下一轮比较;因此比较发生时,pre_state仍保存上一轮结果,首次比较则使用题目给定的初始状态。
填空分析
①
每组必须恰好含m次采集值,所以切片hum[i:i+m]应满足i+m≤len(hum),最后一个起始下标为len(hum)−m。range不包含结束值,因此加框处应改为:
len(hum) - m + 1
例如7个数据、m=4时,只能从下标0、1、2、3开始取数;原写法还会处理i=4、5,得到不足4个数据的切片。
②
稳定状态除平均值符合要求外,还要求湿度波动不超过阈值。bd已保存本组的最大值与最小值之差,“不超过”包含等于,因此填:
bd <= T
③
cnt统计频率改变的次数。只有本轮判定的state与此前保存的pre_state不同,才发生一次调整,因此填:
state != pre_state
这一比较同时覆盖稳定转为波动、波动转为稳定两种变化;连续两轮状态相同则不计数。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_04_G3_jinhuashixiao_q014
