校园一卡通系统,采用RFID技术采集校园卡的信息,实现用餐管理、图书借阅等功能,系统部分框架图如下。
n=100; sumn=0 #①处
pin14. write_digital(1) #打开输送带控制开关
while True:
d=pin2. read_ digital ( ) #返回装箱状态
if d==1: #②处
sumn=sumn+1
if sumn= =n:
pin14. write_ digital (0) #关闭输送带控制开关
break
sleep (1000) #等待1秒
下列关于上述代码及系统功能描述不正确的是( )
s=input("明文: ")
p="" ; key=2
for ch in s:
if "0"<=ch and ch<="9":
p+=str((int (ch) +key) %10)
else:
p=ch+p
print("密文:", p)
若输入明文为“ym587”,则输出密文为( )
n=len (nums);i=1
while i<n:
if nums[i]!=nums[i-1]:
k+=l1
i+=1
nums=nums [:k]
上述程序段中方框处可选代码为:①k=0 ②k=1③nrums[k]=nums[i] ④nums [i-1]=nums[i]
则(1)、(2)处代码依次为( )
import random
s1="AsiaGames"; s2=[]; s3=""
n=len(s1); i=0
while i<n:
if random. randint (0, 1)==0:
if len(s2)==0 or s1[i]>s2[-1]:
s2. append(s1[i])
i+=1
else:
if len(s2) >0:
s3+=s2. pop(-1)
while len(s2)>0:
s3+=s2. pop(-1)
print (s3)
执行该程序,则输出结果不可能是( )
现有趣味运动会原始成绩表如图a所示,其中每个项目参赛人数均不少于10人,编写Python程序计算每个项目的前六名得分及各班总分,并以柱形图呈现各班总分情况,如图b所示。
matplotib模块绘图barh)函数及其参数如下表所示:
函数名及用法 | 功能 |
barh(y轴数据序列,x轴数据序列,其它参数缺省) | 绘制水平柱形图 |
def score(fslist):
jf=[0]*len(fslist)
i=1; c=6; same=1; st=0
①
while i<len(fslist):
if fslist[i]!=fslist[i-1]:
for j in range( ② ):
jf[j]=round (sumfs/ same, 2)
st=i ; same=1 ; sumfs=0
else:
same+=1
if c>0:
c-=1
sumf s=sumfs+c
if ③ :
break
i+=1
if st==0: #处理全体同分的情况
jf=[round (21/len(fslist), 2)]*1en(fslist)
return jf
import pandas as pd
import matplotlib. pyplot as plt
plt. rcParams[" font. sans-serif"]=[" KaiTi", "SimHei", "FangSong"] #设置中文字体
df=pd, read_ excel("dbw. xlsx")
item=["赶猪","投篮","跳绳"]
#创建仅有列标题的DataFrame对象df1
df1=pd. DataFrame (columns=["项目","班级","姓名","成绩","得分"])
for i in range(3) :
dfi tem= ▲ #筛选出同一项目的所有记录
dfitem=dfitem. sort_ _values ("成绩", ascending=False)
lst=list (dfitem ["成绩"]) #把“成绩”列数据转为列表存储
dfitem["得分"]=score(lst) #计算得分
df1=pd. concat ([df1, dfitem]) #合并赋分后的项目记录
dfbj=df1. groupby ("班级", as_ index=False) #按班级分类,保持原索引
dfzf=dfbj["得分"]. sum( ) #计算各班级总分
plt. barh( ④ ) #绘制如图b所示柱形图
plt. ylabel("班级") #y轴标签为“班级”
plt. title("‘趣味运动会’各班总分对比")
plt. show( )
①②③④
①蔬菜温室A中共安装5个采集点,使用智能终端与传感器采集温度、湿度和灌溉阀门每天浇水量等数据,并将数据上传至服务器;
②服务器接收数据后,将数据存储在与程序同文件夹的数据库文件中;
③服务器每次存储数据后,读取数据库中最近上传的100条数据记录,计算平均湿度,若平均湿度小于50,且温室中5个阀门总共浇水量未超过当天需浇水总量L,则发送浇灌指令。
该系统数据存储在data. db数据库文件,名为m_ tb的数据表中,表中有五个字段id、tim、deg、tem和wat,如图b所示。最近6条记录数据如图c所示,其中第1条记录中“A5”表示温室A的5号采集点,“36”为本次采集的湿度值,“490”为本采集点阀门当前累计的浇水量(阀门每天凌晨重置为0)。
结合图c数据记录,当截止到2022 -9-1013:06:00 时,温室A总浇水量(填数字) (提示:温室总浇水量=最近所有阀门浇水量之和)。
①系统的采集点使用智能终端连接传感器采集数据,并采用无线技术接入网络,并以GET形式提交数据,则该传输过程中使用的网络协议主要有(多选,填字母:A .TCP/IP协议/ B .FTP 协议/C .HTTP协议/D .Telnet协议)。
②若id为Al的采集点某次采集如下数据:湿度值为45,阀门浇水量为500,需用URL格式为:ttp://10.1.0.8:88/s?d=45&w=50O&id=A1将采集数据上传到服务器。为实现上述功能,小吴在智能终端编写的Python程序段如下。
#导入相关的模块库与无线连接设置,代码略
IP="10.1.0. 8"; PORT="88"
0bloq. httpConfig(IP, PORT)
while True:
d=pin0. read_ _analog() #读取湿度值
w=pinl. read_ analog() #读取浇水量
s_ get= ▲
errno, resp=0bloq. get (s_ get, 10000)
if errno == 200: #errno的值为200表示数据传输成功
if resp==' open':
pin8. write_ _digital(1) #打开浇水的阀门
else:
pin8. write_ _digital (0) #关闭浇水的阀门
sleep (1000*60)
请在 ▲ 处选填如下代码,能实现传输数据功能的代码是(单选,填字母)
A .s?d=45&w=500&id=A1
B .”s?d=d&w =w&id=A1 '
C .”s?d=str (d) &w=str (w) &id=A1"
D . "s?d="+str (d)+" &w="+str (w)+ " &id=A1"
服务器每次接收到上传的数据后,立刻读取数据库中该温室最近100条的当天数据记录,计算平均湿度,若平均湿度小于50,且5个阀门总出水量未超过当天需浇水总量L,则发送浇灌指令。服务器实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#导入相关的模块库,代码略
app=Flask(_ name_ )
db=sqli te3. connect("①”)
L=3000 #变量L存储温室当天需浇水总量
@app. route("/s")
def index ():
s_ id=request. args. get("id") #获取监测点编号
s_ d=int (request. args. get("d")) #获取湿度值
s_ w=int (request. args. get("w")) #获取当前出水量
s_ t=str (datetime. now())[:10] #获取当天日期
#存储本次采集的各数据至data. db,代码略
cur=db. cursor ()
cur. execute("SELECT * FROM m_tb where tim like '"+s_ .t+"%'") #执行数据库命令
rec=cur. fetchall()#从数据库中读取当天的数据记录
cur. close () ;db. close()
deg=0;wat=[0]*6;i=0
for arr in rec[::-1]:
deg=deg+arr[2]
w= ②
if wat[w]==0:
wat[w]=arr[4]
i=i+1
if i==100:
break
deg=deg/i;sum_ w=0
for i in range(1, 6):
sum_ w=sum_ w+wat[i]
if ③
return" open'
else:
return"close"
app. run(host="10.1. 0.8", port=88)
① ② ③
实现上述功能的Python程序如下,程序运行结果如图b所示。回答下列问题:
#从文件15. csv中读取学生分班数据(已按考号升序排序),保存在列表d中
#其中d[0]数据为['考号','姓名','性别','总分'],变量w存储女生人数,代码略
n=len (d) ; bj=[0]*n
for i in range (n):
b j[i]=i
for i in range(1, n+1):
for j in : #①
if d[bj[j]][2]==d[bj[j+1]][2] and int (d[bj[j]][3])<int (d[bj[j+1]][3]):
bj[j], bj[j+1]=bj[j+1], bj[j]
#②
bj[j], bj[j+1]=bj[j+1], bj[j]
cla=0;k=1
for i in range(1, n) :
cla+=k
if ③
cla=12;k=- 1
elif cla>12:
cla=12;k=-1
elif cla<1:
cla=1; k=1
d[bj[i]]. append (cla)
for i in range(n) :
print (d[bj[i]])
no=input ("请输入查找的学生考号:(输入End结束) ")
while no!="End":
i=1; j=n-1
while i<=j:
m=(i+j)//2
if d[m] [0]==no:
print("学号: "+no+" "+d[m] [1]+"同学在"+str(d[m] [4])+"班")
break
elif ④
i=m+1
else:
j=m-1
if i>j:
print ("没有找到该同学)
no=input ("请输入查找的学生考号: (输入End结束) ")
③④