2026年中小学信息技术教师(中学)实操考核试题及答案.docxVIP

  • 0
  • 0
  • 约1.35万字
  • 约 28页
  • 2026-02-13 发布于四川
  • 举报

2026年中小学信息技术教师(中学)实操考核试题及答案.docx

2026年中小学信息技术教师(中学)实操考核试题及答案

一、算法与程序设计(20分)

【情境】

某校“智慧农场”社团需监测土壤湿度,当湿度连续5次低于30%时触发灌溉,灌溉时长为(50‐湿度值)×2秒。控制器为ESP32,数据通过MQTT上传至本地RabbitMQ,Web端实时折线图展示。

任务1.1编写Python脚本,模拟生成2026年4月1日0:00至4月3日23:59、间隔10分钟的湿度数据,要求:

(1)整体呈正弦波动,日均值35%,振幅±15%,叠加标准差3%的高斯噪声;

(2)将数据写入“humidity.csv”,字段:timestamp,humidity;

(3)在同一脚本内完成数据清洗,剔除明显异常值(|x‐μ|3σ),生成新文件“humidity_clean.csv”;

(4)绘制清洗前后对比折线图,保存为“compare.png”,dpi=300,图例中文。

任务1.2基于清洗后的数据,编写函数irrigation_plan(),返回一个列表,列表元素为字典,键包括“start”“duration”,表示每次灌溉的起始时间与持续秒数;规则:连续5点低于30%触发,灌溉时长计算如上;若两次灌溉间隔不足30分钟,合并为一次,时长累加。

任务1.3将任务1.2结果以JSON格式保存为“plan.json”,并进一步生成面向ESP32的Arduino代码文件“irrigation.ino”,实现:

①通过DHT11采集湿度(软模拟);

②每10分钟上报一次;

③收到MQTT下行指令“irrigate:XX”后,打开继电器XX秒;

④上报格式为{id:esp32_001,humidity:34,irrigation:0}。

评分细则:

数据生成符合波动规律4分;清洗算法正确3分;可视化清晰3分;irrigation_plan逻辑完整5分;Arduino代码语法正确、逻辑吻合5分。

参考答案与解析:

任务1.1关键代码(节选,完整脚本存为“D:\IT_2026\answer\t1_1.py”)

```python

importnumpyasnp,pandasaspd,matplotlib.pyplotasplt

np.random.seed(42)

times=pd.date_range(2026-04-0100:00,2026-04-0323:59,freq=10T)

h_base=35+15np.sin(2np.pinp.arange(len(times))/144)+np.random.normal(0,3,len(times))

df=pd.DataFrame({timestamp:times,humidity:h_base})

df.to_csv(humidity.csv,index=False,float_format=%.2f)

清洗

mean,std=df.humidity.mean(),df.humidity.std()

mask=(df.humidity=mean-3std)(df.humidity=mean+3std)

df_clean=df[mask].copy()

df_clean.to_csv(humidity_clean.csv,index=False)

绘图

plt.figure(figsize=(8,4))

plt.plot(df.timestamp,df.humidity,alpha=0.6,label=原始)

plt.plot(df_clean.timestamp,df_clean.humidity,label=清洗后)

plt.legend();plt.savefig(compare.png,dpi=300)

```

解析:正弦周期设为144个数据点(24h×6),振幅15%,高斯噪声3%,符合农业环境真实波动;3σ准则剔除突变噪声,保留趋势。

任务1.2关键逻辑

```python

defirrigation_plan():

df=pd.read_csv(humidity_clean.csv,parse_dates=[timestamp])

below=(df.humidity30).astype(int)

grp=(below!=below.shift()).cumsum()

plans,s,i=[],None,0

for_,gindf.groupby(grp):

if(g.humidity30).all()andlen(g)=5:

start=g.iloc[0].timestamp

duration=int((50-g.iloc[0].humidity

文档评论(0)

1亿VIP精品文档

相关文档