资源简介 6.1 利用工程思维处理实时数据学习目标 1.基于生活中的问题设计情境,掌握分析问题、抽象建模、设计算法、编写程序的过程。2.掌握利用算法解决问题的思维能力构建。(2025年1月浙江选考)根据机器的负载率对工厂的6台机器(编号0~5)进行监控和调度。调度规则是:每隔1小时采集1次各台机器的负载率(负载率用百分制表示,例如,负载率95%表示为95,机器休息时的负载率为0),负载率超过90的机器都调度休息;如果所有机器负载率都不超过90,则负载率最高的机器休息,若多台机器负载率同为最高,则编号最小的机器休息。休息的机器在休息1小时后再次工作。请回答下列问题:(1)若某次采集到0~5号机器的负载率依次为75、85、88、0、88、87,当前处于休息状态的机器编号是3,接下来休息的机器编号是 。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。n=6;a=[0]*n #列表a长度为n,各元素值均为0#启动0~4号机器工作,5号机器休息,代码略While True: #延时1小时,再采集各机器负载率存入a,a[i]存放i号机器的负载率,代码略 t=0;cnt=0 for i in range(n): if ① : #调度i号机器休息,代码略 cnt+=1 if a[i]>a[t]: ② elif a[i]==0: #调度i号机器工作,代码略 if ③ : #调度t号机器休息,代码略 简单算法及其程序实现是考查的重点,能够体现很大的区分度。这部分内容可以分散到信息系统搭建过程的代码设计或者利用pandas进行数据统计的过程中,也可能是一个生活中具体的问题,需要编写代码来解决,主要体现枚举算法和迭代算法的思想。控制指的是程序设计中顺序、选择和循环三种基本控制结构。分支结构分为单分支结构、双分支结构和多分支结构,而分支结构的组合可以分为多个分支语句和分支的嵌套。多分支结构和多个分支语句的区别在于多分支结构只执行其中一个判断条件,而多个分支语句依次执行每个分支结构语句。遍历是算法最核心的思想,往往用循环结构来实现。可以按位置遍历,如 for i in range(20);也可以按元素进行遍历,如for i in [3,2,1,7]。用while语句往往实现满足某个条件时的遍历。例1 某监控设备可定时采集红绿信号灯状态数据,数据格式记为[a,b],其中a、b分别为红灯和绿灯的状态值,0表示灯灭,1表示灯亮,如[0,1]表示红灯灭、绿灯亮。现要编写程序,每隔1秒采集并检测信号灯是否存在如下异常状态:第一类,红绿灯同亮或同灭;第二类,红灯或绿灯超时,即保持同一状态时长大于上限值(如300秒)。检测到异常状态就发送相应信息。请回答下列问题:(1)若检测到“红绿灯同亮”异常,则采集到的数据是 (单选,填字母)。 A.[0,0] B.[0,1]C.[1,0] D.[1,1](2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。tlimit=300 #设置信号灯保持同一状态时长上限值pre=[-1,-1]t=[0,0] #t[0]、t[1]分别记录红灯、绿灯保持同一状态的时长while True: #接收一次采集到的状态数据,存入d,代码略 if ① : if d[0]==1: #发送“红绿灯同亮”信息,代码略 else: #发送“红绿灯同灭”信息,代码略 for i in ② : if d[i]==pre[i]: t[i]+=1 if ③ : if i==0: #发送“红灯超时”信息,代码略 else: #发送“绿灯超时”信息,代码略 else: t[i]=1 pre=d #延时1秒,代码略变式1 某快递中转站有分拣机器人调度系统,该系统监测机器人电量并调度低电量机器人充电。充电区域有6个普通充电桩(编号0~5)和1个紧急充电桩(编号6)。调度规则:若机器人处于电量紧急状态,调度至等待时间最短的充电桩;若为非紧急状态,调度至等待时间最短的普通充电桩。机器人状态数据格式为[a,b],其中a为待充电时长,b为状态(1为紧急,0为普通)。(1)某时刻0~6号充电桩完成当前任务所需时间依次为7、8、2、4、5、3、1,此时有1台状态为[4,1]的机器人到达。根据规则,该机器人将被调度到的充电桩编号为 。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。n=7 #充电桩个数wt=[0]*n #列表wt 长度为n,各元素值均为0while True: #系统读取当前机器人的待充电时长以及状态,存入列表r,代码略 p=0;mt=wt[p] for i in range(1,n-1): if ① : p=i;mt=wt[i] if ② : if mt>wt[n-1]: wt[n-1]+=r[0] #调度机器人前往 n-1 号充电桩,代码略 else: ③ #调度机器人前往p号充电桩,代码略 else: #调度机器人前往 p 号充电桩,代码略 #输出当前机器人等待时间,代码略例2 小华设计了一个自习室噪声提醒装置,每秒采集一次噪声数据,若1分钟内采集到超过50分贝的噪声大于30次,则发出提醒。部分Python程序如下,请在划处填入合适的代码。d=[0]*60 #生成列表d,包含60个元素,每个元素的值都是0count=0① while True: #接收一次采集到的噪声数据并存入val,代码略 if d[i]>50 and val<=50: ② elif d[i]<=50 and val>50: count+=1 ③ i=(i+1)%60 if count>30: print("噪声过大") #延时1秒,代码略变式2 某款无人机具备自动返航功能,当满足以下在一条件时无人机自动返航:①信号连续丢失达3秒,②电量低于20%,③距起点超出200米。无人机启动后,每隔1秒自动采集1次自动返航的条件数据,格式记为[a,b,c],其中a为信号是否丢失,b为电量,c为距起点距离。如[1,0.55,125]表示没有丢失信号(1为没丢失,0为丢失),电量55%,距起点125米。某次无人机飞行的数据下载至文本文件,编程分析无人机返航的时间及原因。请回答下列问题:(1)某次飞行数据中,无人机的初始状态正常,从第1秒开始采集的数据依次为:[[1,0.28,5],[1,0.26,12],[0,0.23,20],[0,0.19,30],[0,0.17,40],[1,0.15,45],…],无人机从第 秒开始返航。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。#读取文本文件,飞行数据存入列表data中,代码略reasons=["信号连续丢失达3秒,"电量不足20%","距起点超出200米"]r=-1;j=0b=[1,1,1]for i in range(len(data)): ① j=(j+1)%3 if b[0]+b[1]+b[2]==0: r=0;break if data[i][1]<0.2 or ② : if data[i][1]<0.2: r=1 else: r=2 breakif r!=-1: print("无人机在第",i+1,"秒,因为", ③ ,"自动返航。") else: print("本次飞行,无人机没有自动返航。")1.编写程序,每隔固定时间控制霓虹灯状态并输出。亮灭规则为:A.某时刻从第3盏灯开始,灯的状态取决于它的前两盏灯的状态之和(若和为奇数则亮,偶数则灭);B.若亮灯数量大于霓虹灯总数的50%,则将每一盏灯的状态取反,否则将第一盏灯状态取反;重复上述操作。请回答下列问题:(1)若light初始为[1,0,0,0,0],经过规则A后编号为3的霓虹灯状态值为 (填数字:0/1)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。#读取霓虹灯的总数,存入n,代码略light=[0]*n #初始化灯的状态while True: for i in range(2,n): ① if m%2==0: light[i]=0 else: light[i]=1 #输出霓虹灯当前状态,代码略 #延时1秒,代码略 count=sum(light) if ② : j=0 while j ③ j+=1 #输出霓虹灯当前状态,代码略 else: light[0]=1-light[0] #延时1秒,代码略2.小明设计了一个蔬菜大棚自动浇水系统。该系统利用传感器每天早、中、晚三次进行土壤湿度检测,若连续三次湿度值均低于阈值s,则打开阀门浇水,否则将关闭阀门。浇水时间根据土壤平均湿度值ave决定:ave<100为重度干旱,浇水10分钟;100≤ave<200为中度干旱,浇水8分钟;200≤ave<300为轻度干旱,浇水5分钟。请回答下列问题。(1)若s的值为300,土壤湿度传感器早上、中午和晚上采集的数据依次是190、180和160,则应浇水的时间是 。 (2)请在划线处填入合适的代码。cnt=ave=0while True: hum=float(request.args.get("hum1")) #获取湿度传感器的数值 #将土壤湿度值存入数据库,并从数据库中读取湿度阈值存入变量s中,代码略 if hum cnt+=1 ① else: cnt=0;ave=0 if cnt==3: ave=ave/3 if ave<100: t=10 #t为浇水时间,单位是分钟 elif ② : t=8 elif 200<=ave<300: t=5 cnt=0;sta=1 else: ③ #根据sta状态打开浇水系统浇水t分钟或关闭浇水系统 #延时8小时,代码略3.某智能环境监测系统每小时采集一次温度数据。数据格式记为[tm,tp],其中tm,tp分表为时刻与温度,tm的数据范围为0~23,tp的数据范围为5~45。例如[12,36]表示12点时,检测到的温度为36 ℃。编写程序,获取当前时刻温度,参照预警标准,进行启动预警;若温度达到更高一级标准或同等级则进行更新预警。各级预警标准如下:Ⅰ级预警:24小时内当气温升至40 ℃及以上;Ⅱ级预警:24小时内当气温升至37 ℃及以上;Ⅲ级预警:24小时内当气温升至35 ℃及以上。程序运行后的部分界面如图所示。请回答下列问题:(1)图中预警的各时刻数据如下:[2,35],[5,41],[5,x],[6,40],[3,29],[10,41],则x的值可能是 (单选,填字母)。 A.30 B.36C.38 D.41(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。limit=[40,37,35]pre=-1 #存储前一次预警的数据,初始化状态为-1while True: #采集一次数据,存入列表d,d[0]存储时刻,d[1]存储温度,代码略 if d[0]==0: #每日0时初始化 ① for i in range(3): if d[1]>=limit[i]: if ② : if pre==-1: #启动预警信息,代码略 else: #更新预警信息,代码略 pre=d[1] elif i>0 and pre #更新预警信息,代码略 ③ break #延时1小时,代码略4.小红设计一个检测机房空调制冷效果的系统。学校5个机房,机房0到机房4中各设置4个温度传感器(编号0~3),每分钟采集温度数据并发送给服务器,采集数据的格式为机房id+传感器id+温度,如'4127'代表4号机房的1号传感器温度为27。当机房平均温度高于30度时打开该机房空调,当平均温度低于26度时则关闭空调。如果空调连续制冷180分钟温度仍然无法降至26度以下,说明空调故障需要维修。请回答问题:(1)若某次采集到的数据data为['1130','2124','1332','1228','2021','1031','2323','2221',……],则机房1空调状态应调整为 (选填,填文字:开/关)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适代码。n=5 #房间数量s=[0]*n #存放每个房间空调的状态,1为打开,0为关闭time=[0]*n;limit=[26,30]while True: #将当前各房间的温度传感器数据存入列表data中,代码略 temp=[0]*n #存放每个房间的平均温度 for i in range(len(data)): ① temp[rid]+=int(data[i][2:])/4 for i in range(n): if ② : s[i]=1 elif temp[i] s[i]=0;time[i]=0 ③ #将控制指令s发送给空调,代码略 if time[i]>=180: #发送故障机房信息给维修人员,代码略 #延时1分钟,代码略1.某产品质量检测设备要对一批玩具机器人进行质量检测。玩具机器人可以在二维平面上行走,行走时的位置用横纵坐标表示,若横、纵坐标之和比前一个位置的横、纵坐标之和大,则表示机器人在前进。检测时,每隔1秒钟采集一次机器人的坐标。若在2分钟之内,机器人能连续前进100次(即连续100个增大的坐标之和)则表示产品合格。请回答以下问题:(1)某次检测到有6个位置的坐标,按时间递增的顺序依次为(0,0),(1,0),(0,2),(0,3),(1,2),(3,1),则连续前进的次数(坐标个数)最多是 (填数字)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。prex=prey=-1n=t=maxn=0while True: #接收一次采集到的机器人位置坐标,分别存入x和y,代码略 t+=1 if ① : n+=1 else: n=1 if ② : maxn=n if t>=120: if ③ : #产品合格,将之移入合格产品线,并将下一个产品放入检测,代码略 else: #产品不合格,将之移入不合格流水线,并将下一个产品放入检测,代码略 n=t=maxn=0 prex=prey=-1 else: prex=x;prey=y #延时1秒钟,代码略2.某场所要求环境温度低于阈值(30 ℃),温控系统每隔1分钟采集1次实时温度,若实时温度连续6分钟都未低于阈值,则需要启动制冷设备,若实时温度连续6分钟都低于阈值,则关闭制冷设备。编写程序,统计某一天制冷设备启用的总时长(分钟)。(1)若某时刻制冷设备处于开启状态,系统依次采集到实时温度30 ℃、31 ℃、30 ℃、29 ℃、29 ℃、28 ℃后,该制冷设备处于 (选填:开启/关闭)状态。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。t_last=0;time=dtime=0run=False #假设制冷设备的初始状态为关闭t0=30 #设置阈值为30 ℃while True: #每分钟接收一次采集到的实时温度,存入temp,代码略 #t_new的值为0表示实时温度低于阈值,值为1表示实时温度未低于阈值 if ① : t_new=0 else: t_new=1 if t_new==t_last: ② if time>5: if temp>=t0: #实时温度连续 6分钟都未低于阈值 run=True #发送开启制冷设备的指令,代码略 else: run=False #发送关闭制冷设备的指令,代码略 else: time=1 if run: dtime+=1 ③ #延时1分钟,代码略print("开启制冷设备的总时长(分钟):",dtime)3.某监测设备可定时采集甲、乙两通道的排放数据,数据格式记为[a,b]。数据异常分两种情况。其一,当a超过500,b也超过500时;其二,当a与b的和超过1200时。编写程序,每隔1秒采集排放数据,当排放数据持续异常的时长超过上限t1时,打开阀门。阀门开启的时长固定为t2秒,t2秒后阀门将自动关闭,并重新开始监测。请回答下列问题:(1)下列数据属于数据异常的是 (单选,填字母)。 A.[985,211] B.[500,500]C.[666,888] D.[0,1000](2)实现上述功能的部分Python程序段如下,请在划线处填入合适的代码。t1=10 #设置持续异常的时长上限值t2=3 #设置阀门每次开启的时长switch=False #用True、False分别表示阀门开、关状态time1,time2=0,t2while True: #接收一次采集到的排放数据,存入d,代码略 if switch: ① if time2==0: switch=False time1=0 else: if d[0]>500 and d[1]>500 or d[0]+d[1]>1200: time1+=1 if ② : switch=True;time2=t2 #执行“打开阀门”操作,代码略 else: ③ #延时1秒,代码略4.小明在实验室搭建一套花园智能灌溉系统,分成若干个分区,每个分区灌溉阀门都能独立控制。当阀门关闭时,若传感器检测到土壤水分值持续20分钟低于10,则打开阀门;当阀门打开时,若土壤水分值高于40,或阀门持续30分钟处于打开状态,则关闭阀门。(1)若分区1在某时刻的水分值为11,阀门状态是关闭的,18分钟后测得水分值为9,此时阀门状态为 (单选,填字母:A.打开/B.关闭)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。n=5;t=[0]*na=[0]*n #各分区土壤水分值b=[0]*n #各分区灌溉阀门状态,0表示关闭,1表示打开mmin,mmax=10,40 #设置土壤水分值范围while True: #从传感器获取各分区土壤水分值,保存在a中,代码略 for i in range(n): if ① : if a[i] t[i]+=1 else: t[i]=0 if t[i]>=20: ② b[i]=1 else: ③ if a[i]>mmax or t[i]>=30: t[i]=0;b[i]=0 #延时1分钟,根据列表b的值,更新阀门状态,代码略5.某农科院将实验田自左往后分为m块地(编号依次为0~m-1),每块地配置一个喷灌装置。灌溉系统定期测量所有地块的水量(非负整数),然后自左起地块开始检查:若某地块当前水量值小于1则开启喷灌:自身水量增加2、左右相邻地块水量各增加1,随后关闭喷灌装置;接着进行下去,直到m块地的水量均不小于1。(1)若m=12,灌溉系统某次测量中,编号0~11的各地块的水量值依次为0,0,1,2,1,0,1,0,2,1,1,0,则需开启喷灌装置的数量为 。 (2)模拟上述功能的部分Python程序如下,请在划线处填入合适的代码。while True: #定期测量编号为0~m-1的各块地的水量值,依次存入a[0]~a[m-1] i=0 while i if ① : #开启灌溉,代码略 if i==0: a[i+1]+=1 elif i a[i-1]+=1;a[i+1]+=1 else: a[i-1]+=1 ② #关闭喷灌装置,代码略 i=i+2 else: ③ 6.某路口的交通信号灯控制系统每隔1秒采集路口车辆情况,若在1分钟以内(采集60次)检测到持续有车辆通过路口,且持续数量最大值超过30辆时视为大流量,需要设置绿灯持续50秒,黄灯持续5秒,红灯持续45秒。其他流量情况下设置绿灯持续30秒,黄灯持续5秒,红灯持续25秒。如[2,4,0,1,0,3]表示检测了6次,每次检测到的车辆数分别是2、4、0、1、0、3辆车,最大持续通过的车辆数是6辆。请回答下列问题。(1)若十次检测的车辆数据是[3,0,2,4,0,3,1,1,0,7],则持续数量最大是 。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适代码。while True: cur=0;maxn=0 for i in range(60): #接受一次系统中监控设备检测到的车辆数量,存入n,代码略 if n>0: cur+=n if ① : maxn=cur else: ② #延时到1秒,代码略 if ③ : #发送“大流量”状态信息,设置下一轮的绿灯时间 50秒, #黄灯时间 5秒,红灯时间45秒,代码略 else: #发送“正常流量”状态信息,设置下一轮的绿灯时间 30秒, #黄灯时间 5秒,红灯时间25秒,代码略 #等待当前一轮红绿灯结束,进行下一轮红绿灯设置,代码略7.某水库水位预警系统共设立10个监测点,每个监测点可统计水位情况并发送预警信息,信息分为三种状态值,0表示低水位预警,1表示正常水位(不发送预警信息),2表示高水位预警。当超过一半的监测点发送同一预警信息,即正式发布水库水位警报。现要编写程序,每隔1分钟获取各个监测点的水位预警信息,并发布水库水位状况。若出现水库水位警报,需统计警报的持续时间。(1)某时刻水库未发布水位警报,则10个监测点的状态值之和可能是 (单选,填字母)。 A.0 B.5C.16 D.20(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。flag=1 #flag 标记水库水位警报情况,0表示低水位警报,1表示正常水位,2表示高水位警报ti=0 #ti存储警报持续时间while True: t=[0,0,0] #t[0]、t[1]、t[2]分别记录低水位预警,正常水位,高水位预警的监测点数量 #获取10个监测点水位预警信息的状态数据,存入d,代码略 for i in range(10): t[d[i]]=① if t[0]>5: if flag!=0: flag=0;ti=0 else: ② #发送低水位警报和持续时间,代码略 elif t[2]>5: if flag!=2: flag=2;ti=0 else: ti+=1 #发送高水位警报和持续时间,代码略 else: ③ #延时1分钟,代码略6.1 利用工程思维处理实时数据学习目标 1.基于生活中的问题设计情境,掌握分析问题、抽象建模、设计算法、编写程序的过程。2.掌握利用算法解决问题的思维能力构建。(2025年1月浙江选考)根据机器的负载率对工厂的6台机器(编号0~5)进行监控和调度。调度规则是:每隔1小时采集1次各台机器的负载率(负载率用百分制表示,例如,负载率95%表示为95,机器休息时的负载率为0),负载率超过90的机器都调度休息;如果所有机器负载率都不超过90,则负载率最高的机器休息,若多台机器负载率同为最高,则编号最小的机器休息。休息的机器在休息1小时后再次工作。请回答下列问题:(1)若某次采集到0~5号机器的负载率依次为75、85、88、0、88、87,当前处于休息状态的机器编号是3,接下来休息的机器编号是 。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。n=6;a=[0]*n #列表a长度为n,各元素值均为0#启动0~4号机器工作,5号机器休息,代码略While True: #延时1小时,再采集各机器负载率存入a,a[i]存放i号机器的负载率,代码略 t=0;cnt=0 for i in range(n): if ① : #调度i号机器休息,代码略 cnt+=1 if a[i]>a[t]: ② elif a[i]==0: #调度i号机器工作,代码略 if ③ : #调度t号机器休息,代码略答案 (1)2 (2)①a[i]>90 ②t=i ③cnt==0 或 a[t]<=90解析 本题考查循环结构和多分支选择结构以及算法的综合应用。(1)机器负载均不超过90,负载最大的是2号、4号,都是88。按题目要求此时编号小的机器休息,编号为2的机器休息。(2)①按要求,负载率只要超过90的机器都调度休息,所以这里的条件:a[i]>90;②根据后面的代码,这里是查找负载最大的机器,将编号保存在变量t中;③变量cnt用于统计当前有多少台机器的负载率超过了90,只有当cnt为0时,编号为t号的机器休息。所以这里的条件是cnt等于0。 简单算法及其程序实现是考查的重点,能够体现很大的区分度。这部分内容可以分散到信息系统搭建过程的代码设计或者利用pandas进行数据统计的过程中,也可能是一个生活中具体的问题,需要编写代码来解决,主要体现枚举算法和迭代算法的思想。控制指的是程序设计中顺序、选择和循环三种基本控制结构。分支结构分为单分支结构、双分支结构和多分支结构,而分支结构的组合可以分为多个分支语句和分支的嵌套。多分支结构和多个分支语句的区别在于多分支结构只执行其中一个判断条件,而多个分支语句依次执行每个分支结构语句。遍历是算法最核心的思想,往往用循环结构来实现。可以按位置遍历,如 for i in range(20);也可以按元素进行遍历,如for i in [3,2,1,7]。用while语句往往实现满足某个条件时的遍历。例1 某监控设备可定时采集红绿信号灯状态数据,数据格式记为[a,b],其中a、b分别为红灯和绿灯的状态值,0表示灯灭,1表示灯亮,如[0,1]表示红灯灭、绿灯亮。现要编写程序,每隔1秒采集并检测信号灯是否存在如下异常状态:第一类,红绿灯同亮或同灭;第二类,红灯或绿灯超时,即保持同一状态时长大于上限值(如300秒)。检测到异常状态就发送相应信息。请回答下列问题:(1)若检测到“红绿灯同亮”异常,则采集到的数据是 (单选,填字母)。 A.[0,0] B.[0,1]C.[1,0] D.[1,1](2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。tlimit=300 #设置信号灯保持同一状态时长上限值pre=[-1,-1]t=[0,0] #t[0]、t[1]分别记录红灯、绿灯保持同一状态的时长while True: #接收一次采集到的状态数据,存入d,代码略 if ① : if d[0]==1: #发送“红绿灯同亮”信息,代码略 else: #发送“红绿灯同灭”信息,代码略 for i in ② : if d[i]==pre[i]: t[i]+=1 if ③ : if i==0: #发送“红灯超时”信息,代码略 else: #发送“绿灯超时”信息,代码略 else: t[i]=1 pre=d #延时1秒,代码略思维点拨明考向 本题考查利用算法程序解决生活实际问题精点拨 (1)1表示灯亮,两个灯同亮,值均为1。(2)①第一类,红绿灯同亮或同灭,表示采集的数据d中两个元素d[0]和d[1]的值相等。②从条件d[i]==pre[i]来看,变量i表示0或1,依次表示红灯或绿灯的索引位置。③t[0]、t[1]分别记录红灯、绿灯保持同一状态的时长,第二类,红灯或绿灯超时,即保持同一状态时长大于上限值(如300秒),当某个灯i的持续时间t[i]大于上限值tlimit时,出现超时信息答案 (1)D (2)①d[0]==d[1]②range (2)或range(len(d)) ③t[i]>tlimit变式1 某快递中转站有分拣机器人调度系统,该系统监测机器人电量并调度低电量机器人充电。充电区域有6个普通充电桩(编号0~5)和1个紧急充电桩(编号6)。调度规则:若机器人处于电量紧急状态,调度至等待时间最短的充电桩;若为非紧急状态,调度至等待时间最短的普通充电桩。机器人状态数据格式为[a,b],其中a为待充电时长,b为状态(1为紧急,0为普通)。(1)某时刻0~6号充电桩完成当前任务所需时间依次为7、8、2、4、5、3、1,此时有1台状态为[4,1]的机器人到达。根据规则,该机器人将被调度到的充电桩编号为 。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。n=7 #充电桩个数wt=[0]*n #列表wt 长度为n,各元素值均为0while True: #系统读取当前机器人的待充电时长以及状态,存入列表r,代码略 p=0;mt=wt[p] for i in range(1,n-1): if ① : p=i;mt=wt[i] if ② : if mt>wt[n-1]: wt[n-1]+=r[0] #调度机器人前往 n-1 号充电桩,代码略 else: ③ #调度机器人前往p号充电桩,代码略 else: #调度机器人前往 p 号充电桩,代码略 #输出当前机器人等待时间,代码略答案 (1)6 (2)①wt[i]②r[1]==1 或r[1]!=0 ③wt[p]+=r[0]解析 本题考查循环结构和多分支选择结构以及算法的综合应用。(1)该机器人为紧急状态,因此将在6号充电桩充电。(2)①在6个普通充电桩中查找所需时间最短的充电桩编号p和所需最短时间mt,因此条件为wt[i]例2 小华设计了一个自习室噪声提醒装置,每秒采集一次噪声数据,若1分钟内采集到超过50分贝的噪声大于30次,则发出提醒。部分Python程序如下,请在划处填入合适的代码。d=[0]*60 #生成列表d,包含60个元素,每个元素的值都是0count=0① while True: #接收一次采集到的噪声数据并存入val,代码略 if d[i]>50 and val<=50: ② elif d[i]<=50 and val>50: count+=1 ③ i=(i+1)%60 if count>30: print("噪声过大") #延时1秒,代码略思维点拨明考向 本题考查循环结构和多分支选择结构以及算法的综合应用精点拨 ①变量i可以表示一个周期中第0至第59秒,需对变量i赋值初值0。②d[i]的值不属于下一周期,因此若当前噪声val大于50,而d[i]的值小于等于50,下一个周期的次数将增加,若d[i]的值大于50,则不增也不减。若当前噪声val小于50,而d[i]的值大于50,说明在下一周期中,count的值将减少。③将当前的val记录到d[i]中,以便和下一周期同时间段的进行比较答案 ①i=0 ②count-=1 ③d[i]=val变式2 某款无人机具备自动返航功能,当满足以下在一条件时无人机自动返航:①信号连续丢失达3秒,②电量低于20%,③距起点超出200米。无人机启动后,每隔1秒自动采集1次自动返航的条件数据,格式记为[a,b,c],其中a为信号是否丢失,b为电量,c为距起点距离。如[1,0.55,125]表示没有丢失信号(1为没丢失,0为丢失),电量55%,距起点125米。某次无人机飞行的数据下载至文本文件,编程分析无人机返航的时间及原因。请回答下列问题:(1)某次飞行数据中,无人机的初始状态正常,从第1秒开始采集的数据依次为:[[1,0.28,5],[1,0.26,12],[0,0.23,20],[0,0.19,30],[0,0.17,40],[1,0.15,45],…],无人机从第 秒开始返航。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。#读取文本文件,飞行数据存入列表data中,代码略reasons=["信号连续丢失达3秒,"电量不足20%","距起点超出200米"]r=-1;j=0b=[1,1,1]for i in range(len(data)): ① j=(j+1)%3 if b[0]+b[1]+b[2]==0: r=0;break if data[i][1]<0.2 or ② : if data[i][1]<0.2: r=1 else: r=2 breakif r!=-1: print("无人机在第",i+1,"秒,因为", ③ ,"自动返航。") else: print("本次飞行,无人机没有自动返航。")答案 (1)4 (2)①b[j]=data[i][0]②data[i][2]>200 ③reasons[r]解析 本题考查循环结构和多分支选择结构以及算法的综合应用。(1)第4秒时电量低于20%。(2)①数组b中只包含3个元素,j每次从0循环至2,因此需要把data[i][0]保存到b[j]中。②当距起点超出200米,也需要返航。③数组reasons中存储了3种返航原因,每种原因的下标保存在r中。1.编写程序,每隔固定时间控制霓虹灯状态并输出。亮灭规则为:A.某时刻从第3盏灯开始,灯的状态取决于它的前两盏灯的状态之和(若和为奇数则亮,偶数则灭);B.若亮灯数量大于霓虹灯总数的50%,则将每一盏灯的状态取反,否则将第一盏灯状态取反;重复上述操作。请回答下列问题:(1)若light初始为[1,0,0,0,0],经过规则A后编号为3的霓虹灯状态值为 (填数字:0/1)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。#读取霓虹灯的总数,存入n,代码略light=[0]*n #初始化灯的状态while True: for i in range(2,n): ① if m%2==0: light[i]=0 else: light[i]=1 #输出霓虹灯当前状态,代码略 #延时1秒,代码略 count=sum(light) if ② : j=0 while j ③ j+=1 #输出霓虹灯当前状态,代码略 else: light[0]=1-light[0] #延时1秒,代码略答案 (1)1 (2)①m=light[i-1]+light[i-2] ②count/n>0.5 或 count>n/2 或 count>n/2 或其他等价答案 ③light[j]=1-light[j]或 light[jl=abs(light[j]-1)解析 本题考查基本程序结构,对规则的理解与逻辑抽象以及算法的实现能力。(1)根据规则A,从第3盏灯(编号为2)开始,依次的状态值为1、1、0,所以编号为3的灯,状态值为1。(2)①变量m是前二盏灯light[i-1]+light[i-2]的状态值之和。②count是亮灯的总数,根据规则B的条件是count/n>0.5;③语句light[j]=1-light[j]将状态值取反。2.小明设计了一个蔬菜大棚自动浇水系统。该系统利用传感器每天早、中、晚三次进行土壤湿度检测,若连续三次湿度值均低于阈值s,则打开阀门浇水,否则将关闭阀门。浇水时间根据土壤平均湿度值ave决定:ave<100为重度干旱,浇水10分钟;100≤ave<200为中度干旱,浇水8分钟;200≤ave<300为轻度干旱,浇水5分钟。请回答下列问题。(1)若s的值为300,土壤湿度传感器早上、中午和晚上采集的数据依次是190、180和160,则应浇水的时间是 。 (2)请在划线处填入合适的代码。cnt=ave=0while True: hum=float(request.args.get("hum1")) #获取湿度传感器的数值 #将土壤湿度值存入数据库,并从数据库中读取湿度阈值存入变量s中,代码略 if hum cnt+=1 ① else: cnt=0;ave=0 if cnt==3: ave=ave/3 if ave<100: t=10 #t为浇水时间,单位是分钟 elif ② : t=8 elif 200<=ave<300: t=5 cnt=0;sta=1 else: ③ #根据sta状态打开浇水系统浇水t分钟或关闭浇水系统 #延时8小时,代码略答案 (1)8 (2)①ave+=hum ②ave<200 ③sta=0解析 本题考查循环结构和多分支选择结构以及算法的综合应用。(1)土壤平均湿度为176,因此需浇水8分钟。(2)①由语句ave=ave/3可以,先统计温度总和至ave,再计算平均湿度。②若满足条件100≤ave<200为中度干旱,浇水8分钟。③若开启浇水t分钟后,cnt的值为0,当cnt小于3时,将停止浇水。3.某智能环境监测系统每小时采集一次温度数据。数据格式记为[tm,tp],其中tm,tp分表为时刻与温度,tm的数据范围为0~23,tp的数据范围为5~45。例如[12,36]表示12点时,检测到的温度为36 ℃。编写程序,获取当前时刻温度,参照预警标准,进行启动预警;若温度达到更高一级标准或同等级则进行更新预警。各级预警标准如下:Ⅰ级预警:24小时内当气温升至40 ℃及以上;Ⅱ级预警:24小时内当气温升至37 ℃及以上;Ⅲ级预警:24小时内当气温升至35 ℃及以上。程序运行后的部分界面如图所示。请回答下列问题:(1)图中预警的各时刻数据如下:[2,35],[5,41],[5,x],[6,40],[3,29],[10,41],则x的值可能是 (单选,填字母)。 A.30 B.36C.38 D.41(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。limit=[40,37,35]pre=-1 #存储前一次预警的数据,初始化状态为-1while True: #采集一次数据,存入列表d,d[0]存储时刻,d[1]存储温度,代码略 if d[0]==0: #每日0时初始化 ① for i in range(3): if d[1]>=limit[i]: if ② : if pre==-1: #启动预警信息,代码略 else: #更新预警信息,代码略 pre=d[1] elif i>0 and pre #更新预警信息,代码略 ③ break #延时1小时,代码略答案 (1)B (2)①pre=-1 ②pre解析 (1)数据[5,x]的预警信息为“III级预警”,即根据题意x的取值范围为[35,36]。(2)变量pre存储前一次预警信息时的温度数值。①每日0时初始化pre为-1,表示每天的初识状态下的预警值。②d[1]表示当前的温度值,i表示预警等级,limit[i]为等级i+1时的温度阈值。该表达式为True时,表示温度值达到预警,考虑启动或更新预警。预警等级可能提高或降低,提高预警等级的条件为pre4.小红设计一个检测机房空调制冷效果的系统。学校5个机房,机房0到机房4中各设置4个温度传感器(编号0~3),每分钟采集温度数据并发送给服务器,采集数据的格式为机房id+传感器id+温度,如'4127'代表4号机房的1号传感器温度为27。当机房平均温度高于30度时打开该机房空调,当平均温度低于26度时则关闭空调。如果空调连续制冷180分钟温度仍然无法降至26度以下,说明空调故障需要维修。请回答问题:(1)若某次采集到的数据data为['1130','2124','1332','1228','2021','1031','2323','2221',……],则机房1空调状态应调整为 (选填,填文字:开/关)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适代码。n=5 #房间数量s=[0]*n #存放每个房间空调的状态,1为打开,0为关闭time=[0]*n;limit=[26,30]while True: #将当前各房间的温度传感器数据存入列表data中,代码略 temp=[0]*n #存放每个房间的平均温度 for i in range(len(data)): ① temp[rid]+=int(data[i][2:])/4 for i in range(n): if ② : s[i]=1 elif temp[i] s[i]=0;time[i]=0 ③ #将控制指令s发送给空调,代码略 if time[i]>=180: #发送故障机房信息给维修人员,代码略 #延时1分钟,代码略答案 (1)开 (2)①rid=int(data[i][0])②temp[i]>limit[1] ③time[i]+=s[i]解析 (1)1130表示1号机房1号传感器温度为30,1332表示3号传感器温度为32,1228表示1号传感器温度为28,1031表示0号传感器温度为31,平均温度为30.25,高于30度时打开该机房空调。(2)①读取机房id,并转换成数值,可以作为temp数组的下标。②s数组存储空调的开关状态,当条件temp[i]1.某产品质量检测设备要对一批玩具机器人进行质量检测。玩具机器人可以在二维平面上行走,行走时的位置用横纵坐标表示,若横、纵坐标之和比前一个位置的横、纵坐标之和大,则表示机器人在前进。检测时,每隔1秒钟采集一次机器人的坐标。若在2分钟之内,机器人能连续前进100次(即连续100个增大的坐标之和)则表示产品合格。请回答以下问题:(1)某次检测到有6个位置的坐标,按时间递增的顺序依次为(0,0),(1,0),(0,2),(0,3),(1,2),(3,1),则连续前进的次数(坐标个数)最多是 (填数字)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。prex=prey=-1n=t=maxn=0while True: #接收一次采集到的机器人位置坐标,分别存入x和y,代码略 t+=1 if ① : n+=1 else: n=1 if ② : maxn=n if t>=120: if ③ : #产品合格,将之移入合格产品线,并将下一个产品放入检测,代码略 else: #产品不合格,将之移入不合格流水线,并将下一个产品放入检测,代码略 n=t=maxn=0 prex=prey=-1 else: prex=x;prey=y #延时1秒钟,代码略答案 (1)3 (2)①x+y>prex+prey ②n>maxn ③maxn>=100或maxn==100解析 本题考查Python基础程序设计。(1)(1,0),(0,2),(0,3)三个位置都是递增的,表示连续前进3次。(2)①填写机器人在前进的关系表达式,即当前位置的坐标之和大于前一次的坐标之和。当前的坐标是x和y,当t>=120不成立时,prex和prey分别得到x和y的值,迭代的方式将当前坐标变为上一次坐标,因此prex和prey就是上一次的坐标。②t是时间,120是指2分钟以内收集坐标的次数。n是当前连续前进的次数,计算前进次数最多的值。③检测产品合格关系表达式,只要有一段连续前进100次即可,即maxn要大于等于100。2.某场所要求环境温度低于阈值(30 ℃),温控系统每隔1分钟采集1次实时温度,若实时温度连续6分钟都未低于阈值,则需要启动制冷设备,若实时温度连续6分钟都低于阈值,则关闭制冷设备。编写程序,统计某一天制冷设备启用的总时长(分钟)。(1)若某时刻制冷设备处于开启状态,系统依次采集到实时温度30 ℃、31 ℃、30 ℃、29 ℃、29 ℃、28 ℃后,该制冷设备处于 (选填:开启/关闭)状态。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。t_last=0;time=dtime=0run=False #假设制冷设备的初始状态为关闭t0=30 #设置阈值为30 ℃while True: #每分钟接收一次采集到的实时温度,存入temp,代码略 #t_new的值为0表示实时温度低于阈值,值为1表示实时温度未低于阈值 if ① : t_new=0 else: t_new=1 if t_new==t_last: ② if time>5: if temp>=t0: #实时温度连续 6分钟都未低于阈值 run=True #发送开启制冷设备的指令,代码略 else: run=False #发送关闭制冷设备的指令,代码略 else: time=1 if run: dtime+=1 ③ #延时1分钟,代码略print("开启制冷设备的总时长(分钟):",dtime)答案 (1)开启 (2)①temp解析 (1)有2次高于阈值,连续3次低于阈值,因此维持原状态不变。(2)①t_new的值为0表示实时温度低于阈值,值为1表示实时温度未低于阈值。②条件t_new==t_last成立表示状态没有改变。time是保持状态的次数,需要累加1。③更新t_last的值为t_new,以便与下一次状态进行对比。3.某监测设备可定时采集甲、乙两通道的排放数据,数据格式记为[a,b]。数据异常分两种情况。其一,当a超过500,b也超过500时;其二,当a与b的和超过1200时。编写程序,每隔1秒采集排放数据,当排放数据持续异常的时长超过上限t1时,打开阀门。阀门开启的时长固定为t2秒,t2秒后阀门将自动关闭,并重新开始监测。请回答下列问题:(1)下列数据属于数据异常的是 (单选,填字母)。 A.[985,211] B.[500,500]C.[666,888] D.[0,1000](2)实现上述功能的部分Python程序段如下,请在划线处填入合适的代码。t1=10 #设置持续异常的时长上限值t2=3 #设置阀门每次开启的时长switch=False #用True、False分别表示阀门开、关状态time1,time2=0,t2while True: #接收一次采集到的排放数据,存入d,代码略 if switch: ① if time2==0: switch=False time1=0 else: if d[0]>500 and d[1]>500 or d[0]+d[1]>1200: time1+=1 if ② : switch=True;time2=t2 #执行“打开阀门”操作,代码略 else: ③ #延时1秒,代码略答案 (1)C (2)①time2-=1 ②timel>t1 ③timel=0解析 (1)C选项当a与b的和超过1200时,属于数据异常。(2)①阀门开启的时长固定为t2秒,t2秒后阀门将自动关闭。打开阀门时,time2的值为t2,每次减少1,当time2的值为0时,关闭阀门,重新计时。②当排放数据持续异常的时长time1超过上限t1时,打开阀门。③当排放数据不持续异常时,将重新计时。4.小明在实验室搭建一套花园智能灌溉系统,分成若干个分区,每个分区灌溉阀门都能独立控制。当阀门关闭时,若传感器检测到土壤水分值持续20分钟低于10,则打开阀门;当阀门打开时,若土壤水分值高于40,或阀门持续30分钟处于打开状态,则关闭阀门。(1)若分区1在某时刻的水分值为11,阀门状态是关闭的,18分钟后测得水分值为9,此时阀门状态为 (单选,填字母:A.打开/B.关闭)。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。n=5;t=[0]*na=[0]*n #各分区土壤水分值b=[0]*n #各分区灌溉阀门状态,0表示关闭,1表示打开mmin,mmax=10,40 #设置土壤水分值范围while True: #从传感器获取各分区土壤水分值,保存在a中,代码略 for i in range(n): if ① : if a[i] t[i]+=1 else: t[i]=0 if t[i]>=20: ② b[i]=1 else: ③ if a[i]>mmax or t[i]>=30: t[i]=0;b[i]=0 #延时1分钟,根据列表b的值,更新阀门状态,代码略答案 (1)B (2)①b[i]==0 ②t[i]=0 ③t[i]+=1解析 (1)土壤水分值持续20分钟低于10,阀门才会打开,因此18分钟后阀门还是关闭状态。(2)①遍历各个分区,阀门状态b[i]为0时,处于关闭,统计传感器检测到土壤水分值持续时间。②土壤水分持续时间t[i]高于20分钟,打开阀门,重新开始计时长t[i]。③土壤水分持续时间t[i]将增加一次。5.某农科院将实验田自左往后分为m块地(编号依次为0~m-1),每块地配置一个喷灌装置。灌溉系统定期测量所有地块的水量(非负整数),然后自左起地块开始检查:若某地块当前水量值小于1则开启喷灌:自身水量增加2、左右相邻地块水量各增加1,随后关闭喷灌装置;接着进行下去,直到m块地的水量均不小于1。(1)若m=12,灌溉系统某次测量中,编号0~11的各地块的水量值依次为0,0,1,2,1,0,1,0,2,1,1,0,则需开启喷灌装置的数量为 。 (2)模拟上述功能的部分Python程序如下,请在划线处填入合适的代码。while True: #定期测量编号为0~m-1的各块地的水量值,依次存入a[0]~a[m-1] i=0 while i if ① : #开启灌溉,代码略 if i==0: a[i+1]+=1 elif i a[i-1]+=1;a[i+1]+=1 else: a[i-1]+=1 ② #关闭喷灌装置,代码略 i=i+2 else: ③ 答案 (1)4 (2)①a[i]==0 ②a[i]=a[i]+2 ③i=i+1解析 (1)水量为0,0,自身水量增加2、左右相邻地块水量各增加1,则喷灌后为2,1,喷灌1次,其余的0各喷灌1次。(2)①依次遍历a中各元素,当a[i]的值为0时,开启灌溉;②喷灌完成后,自身水量a[i]增加2。③若开启灌溉装置,由于相邻数据都加了1,因此a[i+1]无需判断。6.某路口的交通信号灯控制系统每隔1秒采集路口车辆情况,若在1分钟以内(采集60次)检测到持续有车辆通过路口,且持续数量最大值超过30辆时视为大流量,需要设置绿灯持续50秒,黄灯持续5秒,红灯持续45秒。其他流量情况下设置绿灯持续30秒,黄灯持续5秒,红灯持续25秒。如[2,4,0,1,0,3]表示检测了6次,每次检测到的车辆数分别是2、4、0、1、0、3辆车,最大持续通过的车辆数是6辆。请回答下列问题。(1)若十次检测的车辆数据是[3,0,2,4,0,3,1,1,0,7],则持续数量最大是 。 (2)实现上述功能的部分Python程序如下,请在划线处填入合适代码。while True: cur=0;maxn=0 for i in range(60): #接受一次系统中监控设备检测到的车辆数量,存入n,代码略 if n>0: cur+=n if ① : maxn=cur else: ② #延时到1秒,代码略 if ③ : #发送“大流量”状态信息,设置下一轮的绿灯时间 50秒, #黄灯时间 5秒,红灯时间45秒,代码略 else: #发送“正常流量”状态信息,设置下一轮的绿灯时间 30秒, #黄灯时间 5秒,红灯时间25秒,代码略 #等待当前一轮红绿灯结束,进行下一轮红绿灯设置,代码略答案 (1)7 (2)①maxn30解析 考查Python基本程序设计与理解。(1)持续有车辆的数据分别是3、6、5、7,最大持续数量是第十次检测结果7。(2)从第4行的循环可以看出这是一分钟之内的检测,n是当前检测到的车辆数,由此第7行cur的值是n的累加值。而第10行的条件就是n=0的情况,相当于此时未检测到车辆,因此可以认为车辆有中断,那么第②空应该将累加值cur初始为0,以便让cur去统计下一个持续到达车辆总和。因为每次更新cur的值后,需要找到最大持续数量,所以第①空需要更新这个最大值,即cur>maxn更新这个最大值。当一分钟检测结束后,需要判定当前流量情况,以便设置正确的红绿灯时间。从第14、15行的注释可以看到,第③空的功能代码是流量大于30的关系表达式。那么用cur>30还是maxn>30呢,这需要对这两个变量功能的认识。由前面分析也可知,cur的是当前流量,maxn是最大持续的车流量值,因此答案是maxn>30。7.某水库水位预警系统共设立10个监测点,每个监测点可统计水位情况并发送预警信息,信息分为三种状态值,0表示低水位预警,1表示正常水位(不发送预警信息),2表示高水位预警。当超过一半的监测点发送同一预警信息,即正式发布水库水位警报。现要编写程序,每隔1分钟获取各个监测点的水位预警信息,并发布水库水位状况。若出现水库水位警报,需统计警报的持续时间。(1)某时刻水库未发布水位警报,则10个监测点的状态值之和可能是 (单选,填字母)。 A.0 B.5C.16 D.20(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。flag=1 #flag 标记水库水位警报情况,0表示低水位警报,1表示正常水位,2表示高水位警报ti=0 #ti存储警报持续时间while True: t=[0,0,0] #t[0]、t[1]、t[2]分别记录低水位预警,正常水位,高水位预警的监测点数量 #获取10个监测点水位预警信息的状态数据,存入d,代码略 for i in range(10): t[d[i]]=① if t[0]>5: if flag!=0: flag=0;ti=0 else: ② #发送低水位警报和持续时间,代码略 elif t[2]>5: if flag!=2: flag=2;ti=0 else: ti+=1 #发送高水位警报和持续时间,代码略 else: ③ #延时1分钟,代码略答案 (1)B (2)①t[d[i]]+1 ②ti+=1③flag=1解析 (1)若状态之和为0,表示10个监测点状态均为0,将发出预警。若状态之和为5,则同一状态最多是5个1和5个0,则不会发出预警。若状态和为16,可能为8个状态为2,2个状态为0。若状态和为20,可能为10个状态为2。(2)①统计各个状态d[i]的数量。②flag等于0或2,表示会发送预警信息,第1个t[0]出现大于5时,修改预警状态,以后的预警将统计持续时间ti。③0表示低水位预警,2表示高水位预警,正常水位flag的值为1,不发送预警信息。 展开更多...... 收起↑ 资源列表 6.1 利用工程思维处理实时数据.docx 6.1 利用工程思维处理实时数据无答案.docx