t=a[pos]+1
i=pos
while :
a[i]=a[i+1]
i+=1
a[i]=t
def f(s,t): if t>=len(s)-2: return s[t] return f(s,t+2)+s[t] print(f(s,0)) | r="" n=len(s) for i in range(0,n,2): print(r) |
甲程序段 | 乙程序段 |
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | …… | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
c[i] | 1 | 1 | 1 | 1 | 2 | 3 | 2 | 3 | 2 | 3 | …… | 2 | 3 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
qa=[0,0,0,0,0]
qb=[0,0,0,0,0]
h,t=0,4
temp=0
for k in range(100):
qa[t]=c[k]
qb[t]=temp+qa[t]-qa[h]
print(qb[h],qb[t])
temp=qb[t]
t=(t+1)%5
h=(h+1)%5
请回答下列问题:
(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)在搭建该监测系统时,温度传感器与智能终端的配备总数量合理的是(单选,填字母:A.4个温度传感器和4个智能终端/B.4个温度传感器和1个智能终端)。
(2)系统数据采集的时间间隔为3小时,可用于控制采集时间的设备是(单选,填字母:A.传感器/B.智能终端)。
(3)编写智能终端程序时,不需要知道(多选,填字母)
A.与传感器连接的智能终端引脚 B.服务器的存储容量
C.服务器的地址及端口 D.数据库的文件名
(4)当服务器判定有异常情况后,除可通过智能终端控制蜂鸣器发出预警声音之外,请写出其他两种预警的具体方式。
(5)将系统中某年的数据导出到文件data.xlsx中,部分数据如图a所示。其中“预报温度”列是指学校所在地的天气预报温度数据,“差值”列是指实测温度与预报温度相减的绝对值。现要由高到低输出3月份各监测点差值的平均值(如图b所示),再用差值平均值最高的监测点的3月份实测温度数据绘制线形图(如图c所示)。
实现上述功能的部分Python程序如下,请选择合适的代码填入划线处(填字母)。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel ("data.xlsx")
df1=①
df2=②
df2=③
#依次输出df2中各监测点编号及其差值的平均值,如图b所示,代码略
#将df2中首行的监测点编号存入uid,代码略
df2=④
#创建x列表,长度为248,元素依次为0~247,表示3月份采集时间点的序号,代码略
plt.plot(x,df2["实测温度"]) #绘制线形图
#设置绘图参数,并显示如图c所示的线形图,代码略
①②③④处可选代码有:
A.df.groupby("月",as_index=False).差值.mean() #分组求平均
B.df[df["监测点"]==uid] #筛选
C.df[df["月"]==3]
D.df1.sort_values("差值",ascending=False) #降序排序
E.df1.groupby("监测点",as_index=False).差值.mean()
F.df1[df1["监测点"]==uid]
G.df2.sort_values("差值",ascending=False)
现给定所有选手预赛的成绩数据表,每位选手的数据包含学校编号(0~n-1)、选手编号、成绩,成绩数据表已按成绩由高到低排列。编写程序,计算各选手的校内名次,再按上述规则挑选决赛选手,按成绩数据表中的顺序输出选手编号,同时提供查询功能。选手校内名次的计算方法是:若选手所在学校有m人成绩高于该选手,则该选手的名次为m+1。
在图所示的样例中,n、s、w分别为3、8、2,根据图中前3行数据计算出了每位选手的校内名次,进而选出实际入选的9名选手。
学校编号 | 0 | 2 | 2 | 0 | 0 | 2 | 2 | 0 | 1 | 1 | 1 | 1 |
选手编号 | 0002 | 2027 | 2002 | 0072 | 0182 | 2071 | 2128 | 0012 | 1081 | 1002 | 1008 | 1208 |
成绩 | 198 | 185 | 183 | 182 | 182 | 177 | 177 | 176 | 175 | 163 | 161 | 161 |
校内名次 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 4 | 1 | 2 | 3 | 3 |
是否入选 | True | True | True | True | True | True | True | False | True | True | False | False |
请回答下列问题:
(1)对于图所示前4行数据,若s、w分别为5和1,则0号学校入选人数是。
(2)定义如下search(data,sid,score)函数,data列表每个元素的前5个数据项依次为学校编号、选手编号、成绩、校内名次、是否入选,列表已按成绩由高到低排列。函数功能是查找选手编号为sid、成绩为score的元素,返回其下标,若未找到则返回-1。
def search(data,sid,score):
left,right=0,len(data)-1
f=-1
while left<=right:
mid=(left+right)//2
if score==data[mid][2]:
f=mid
left=mid+1
elif score<data[mid][2]:
left=mid+1
else:
right=mid-1
if f==-1:
return-1
for i in range():
if data[i][2]!=score:
return-1
elif data[i][1]==sid:
return i
return-1
①调用search函数,若data列表长度为12,data[0][2],data[1][2],…,data[11][2]的值依次为:198,185,183,182,182,177,177,176,175,163,161,161,score值为177,则while语句中循环体的执行次数是。
②程序中加框处代码有错,请改正。
(3)实现根据选手成绩(成绩不超过200)计算校内名次,以及挑选决赛选手功能的Python程序如下,请在划线处填入合适的代码。
def proc(data,n,s,w):
#创建r列表,共n个元素,每个元素的值均为[0,0,201],代码略
heads=[-1,-1]
tails=[-1,-1]
cnt=0
for i in range(len(data)):
r[k][1]+=1
if data[i][2]<r[k][2]:
r[k][2]=data[i][2]
data[i][3]=r[k][0]
data[i].append(-1) #为data[i]添加一个元素-1
v=1
if data[i][3]<=w:
data[i][4]=True
cnt+=1
v=0
if heads[v]==-1:
heads[v]=i
else:
data[tails[v]][5]=i
tails[v]=i
p,q=heads[0],heads[1]
res=[] #res列表用于存放入选决赛的选手编号,顺序与data列表保持一致
while cnt < s and q!=-1:
tmp=data[q][2]
while q!=-1 and data[q][2]==tmp:
:
res.append(data[p][1])
p=data[p][5]
res.append(data[q][1])
data[q][4]=True
cnt+=1
q=data[q][5]
while p!=-1:
res.append(data[p][1])
p=data[p][5]
return res
"读取n、s、w;读取选手成绩数据表存入data列表,每个元素包含学校编号、选手编号、成绩、校内名次(初值为0)、是否入选(初值为False)5个数据项,代码略"
res=proc(data,n,s,w)
#输出res列表中的入选选手编号,代码略
#读取待查询的选手编号与成绩,调用search函数,根据返回值输出查询结果,代码略
试题篮
0