相关试卷
-
1、知识竞赛结束后,小明从信息系统中导出参赛学生的成绩,存储在“知识竞赛.xlsx”文件中,如图a所示,并编写Python程序,按总分降序排序,分别输入一二三等奖的获奖比例,计算获奖人数和分数线,程序运行结果如图b所示。由于同分人数较多,计算奖次时按最接近规定比例的人数划定分数线,若按两个相邻分数线划定的人数与规定比例的人数同样接近,则取较低的分数线。例如:总人数100人,应有10人获一等奖,若98分及以上有9人,97分及以上有15人,则一等奖分数线为98分;若98分及以上有9人,97分及以上有11人,则一等奖分数线为97分。Python程序如下,请回答下列问题。

图 a

图 b
def find(now,step):
i=now
while score[i][2]==score[now][2]:
①
return i
import pandas as pd
df=pd.read_excel ("知识竞赛.xlsx")
df= ②
score=df.values #二维数组 score 存储所有参赛学生的考号、班级和总分,按总分降序排列
n=len(score)
prize=["一等奖","二等奖","三等奖"]
print("总人数:"+str(n))
s=input("请分别输入一二三等奖的比例: ")
percent=list(map(float,s.split(","))) #一二三等奖比例转换成实数存储在列表 percent 中 nums=[0,0,0]
nums[0]=round( ③ )
for i in range(1,3):
nums[i]=nums[i-1]+round(n*percent[i])
pre=0;res=[""]*n #res 存储学生的奖次
for i in range(3):
now=nums[i]-1
k1=find(now,-1)
k2=find(now,1)
if k2-now<=now-k1:
now=k2-1
line=score[k2-1][2]
else:
now=k1
line=score[k1][2]
print(prize[i],"人数:",now-pre+1,"分数线:",line)
for j in range(pre,now+1):
res[j]=prize[i]
④
(1)、请在划线处填入合适的代码。①②③④
(2)、加框处代码有误, 请改正。 -
2、小明为学校搭建一个信息技术知识竞赛的信息系统,服务器网站基于Python的FlaskWeb框架编写,考生信息存储在数据库文件“data.db”的“user”数据表中,如图a所示;考生通过浏览器访问网站,登录页面如图b所示;登录成功后网站自动跳转到答题页面,如图c所示。

请回答下列问题。
(1)、考生登录系统采用的身份认证技术是 (填字母:A .用户名+口令 B .依靠生物 特征识别 C .USB-Key),该信息系统采用的架构为 (填字母:A .B/S 模式 B .C/S 模式)(2)、服务器端的部分程序如下, 请在划线处填入合适的代码。 import sqlite3from flask import Flask,render_template,request,redirect
ip="192.168.1.100"
port="8080"
app=Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
@app.route("/",methods=['POST'])
def login():
sid=request.form.get("sid")
psw=request.form.get("psw")
conn=sqlite3.connect("data/data.db")
cur=conn.cursor()
cur.execute("SELECT * FROM where sid='%s' and psw='%s'"%(sid,psw)) res=cur.fetchall()
cur.close()
conn.close()
if len(res)==1:
return redirect("/test?sid="+sid+"&name="+ )
#redirect 表示跳转指定的 URL
else:
return "用户名或密码错误,请检查后重新登录!"
@app.route(" ")
def test():
#显示答题页面,代码略。
if __name__=="__main__":
app.run ( )
(3)、图b所示的登录页面渲染的网页模板文件为 ,考生填写了考号和密码后,点击“登录”按钮,浏览器将考号和密码提交给服务器,服务器端执行的视图函数名为; 登录成功后,网站跳转到答题页面。 -
3、有如下Python程序段:
#随机产生 n 个两位正整数存入数组a 中
q=[-1]*n;top=-1
for i in range(n):
if a[i]%3==0 :
top+=1
q[top]=a[i]
elif a[i]>q[top] and a[i]%2==0:
top+=1
q[top]=a[i]
while top>-1:
print(q[top],end=',')
top-=1
执行上述程序段后, 输出结果不可能是( )A、48,57, B、74,80,76, C、74,68,62,33,44, D、98,45,78,88, -
4、生成一个元素个数为6、元素的值在1~9之间且不重复的数组a,Python代码如下:
import random
n=9
b=[[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,-1]]
head=0
a=[]
for i in range(6):
k=random.randint(0,n-i-1)
if k==0:
a.append(b[head][0])
①
else:
p=head
for j in range(k):
pre=p
p=b[p][1]
a.append(b[p][0])
②
划线处应填入的代码为( )
A、①head=b[head][1] ②b[pre][1]=p B、①head=b[0][1] ②b[pre][1]=p C、①head=b[0][1] ②b[pre][1]=b[p][1] D、①head=b[head][1] ②b[pre][1]=b[p][1] -
5、有如下Python程序段:
def sp(a,i):
if "a"<=a[i]<= "z" :
a=a[:i]+a[i+1:]
elif "0"<=a[i]<= "9":
a=a[:i]+str((int(a[i])+3)%10)+a[i+1:]
return a
s="cfi3H8qwz4";i=0
while i<len(s):
s=sp(s,i)
i+=1
执行上述程序段后,s的值为( )
A、”f3H1w4” B、”3H84” C、”6H17” D、”f6H1w7” -
6、有二叉树用数组表示如下表所示:
0
1
2
3
4
5
6
7
8
9
10
11
12
D
A
H
F
G
C
M
则关于该二叉树的说法正确的是( )
A、该二叉树是完全二叉树 B、该二叉树的叶子节点有3个,分别是 C、H、MC.该二叉树的后序遍历序列为C-F-A-M-G-H-D
D、该二叉树的层数为3,节点F在第3层 -
7、某算法的部分流程图如图所示:

执行该部分流程,若依次输入的数据为2、-3、5、-1、2、1、-3、0,则输出m的值为( )
A、7 B、6 C、5 D、4 -
8、下列Python表达式中,与表达式 abs(int(-4.62))的值不相等的是( )A、len([True,4, ”score”,[3,2.7]]) B、int(”324”[1])*2 C、round(24/7,0) D、[”red”,True,4][-1]
-
9、为了保障个人信息安全,下列做法不可取的是( )A、不同的社交账号尽量设置不同的密码 B、重要的数据经常备份或加密后存放在云盘上 C、个人计算机安装并开启防火墙 D、公共场所的免费 Wi-Fi 用起来很方便, 可以随意连接
-
10、以下有关数据和大数据的说法,不正确的是( )A、大数据中价值密度的高低与数据总量的大小成正比 B、基于用户购买行为的大数据, 网站对其进行深度挖掘实现个性化推荐 C、大数据给生活带来便利的同时也会带来信息泄露、数据安全等社会问题 D、数据可视化可以使用户通过直观的方式浏览和观察数据
-
11、某智能设备部分参数如下表所示:
屏幕尺寸
1.5 英寸
WiFi、蓝牙
都支持
操作系统
Ticwear OS
传感器
光学心率传感器、加速度传感器、陀螺仪、电子罗盘
匹配系统
Android 4.3 及以上,iOS 8.0 及以上
控制类型
触控:多点电容式触摸屏
屏幕分辨率
320*320
运行内存
512MB
处理器
联发科 MT2601,
1.2GHz 双核
机身存储
4GB
下列有关该智能设备的说法中, 不正确的是( )
A、该设备可以监测心率和记录运动数据 B、该设备使用的是四核处理器 C、该设备支持触屏控制 D、该设备可以通过蓝牙传输数据 -
12、下列有关信息和信息编码的说法, 正确的是( )A、计算机中的汉字是使用二进制进行编码的 B、根据不同的编码方式,数字图像可分为多种格式,如BMP、JPG、WAV等 C、16色未压缩的位图图像位深度为16位 D、声音数字化过程中,量化位数越大,量化精度越低
-
13、阅读下列材料,请回答第1~2题:
某大型超市使用自助收银系统,方便顾客自助结账,特别是遇到营业高峰期大大缩短了顾客排队结账的等候时间。顾客使用自助收银系统时,先逐个将商品条形码对准扫码口扫描,商品的名称、单价和数量在屏幕上显示,然后再选择扫码或人脸识别完成支付,随即,移动支付APP会发来扣款消息。
(1)、关于该自助收银系统,以下说法不正确的是( )A、除了顾客以外,超市收银员、系统分析员等也是自助收银系统的用户 B、商品的名称、单价和数量属于自助收银系统的数据 C、只要不断电, 自助收银系统就可以正常使用 D、自助收银系统的使用体现了“规范工作流程,提高工作效率”的优势(2)、关于该自助收银系统的工作过程和支付方式,以下说法不正确的是( )A、扫描商品条形码属于信息的采集 B、扫码识别的支付方式采用了 RFID 技术 C、人脸识别的认证方式具有防伪性能好、随时随地可用等优点 D、系统可以通过刷脸支付,说明人脸也是信息的载体 -
14、学校教室后方放有物品柜,柜子有n层,每层有m个格子,从上到下一次是第0层,第1层,…,第n-1层,从左到右依次是第0个格子,第1个格子,…,第m-1个格子。有k组物品(组号为0~k-1),每组至少有2个物品,物品总数不超过n*m个:将k组物品按组号由小到大依次放入柜中,放置方式有两种:
整体放置。按格子编号由小到大的次序查找第一个可放置该组全部物品的空区域(空区域是指从某个空格子开始的同层连续的所有空格子) ,若找到,则在该空区域居中、连续放置该组全部物品,如下图所示。
零散放置。若所有空区域格子数都小于该组物品数,即找不到连续放置的空区域,则将该组每个物品按照从上到下,从左到右的顺序,依次放置到柜中的空格子中,具体次序如下图所示。
小明编写了一个Python程序实现上述功能,程序依次输入n、m代表柜子层数和柜子每层格子数,第三行输入物品组数k,接下来一行输入k个整数代表每组物品个数。程序运行后输出n*m的矩阵代表物品的放置情况,1表示当前格子放置物品,0表示当前格子没有放置物品,运行结果如下图所示。

编写函数init(),功能为预处理i层j列格子开始的同层连续的所有空格子数,保存在数组v中。v[i][j]=0表示i层j列格子不是空格子,v[i][j]=x代表i层j列格子开始的同层连续的所有空格子数为x,代码如下def init():
for i in range(n):
for j in range(m):
if q[i][j]==0:
k=j+1
while k<m and q[i][k] !=1:
k+=1
①
else:
v[i][j]=0
编写函数getpos(L),功能为寻找查找空格子数>=L的第一个空区域,若找到,返回该空区域的起始坐标[x,y],表示第x层,第y个格子开始的连续空格子的数量大于等于L,否则返回-1def getpos(L):
ret=-1
for i in range(n):
for j in range(m):
if ② :
ret=[i,j]
return ret
return ret
解决问题的主程序如下:n=int(input()) #输入层数
m=int(input()) #输入列数
k=int(input()) #输入物品组数
q=[[0 for i in range(m)]
for j in range(n)] # q 保存柜子的放置情况
v=[[0 for i in range(m)]
for j in range(n)] # v 的含义参考 init 函数 init() #预处理
s=input() #输入每组物品数量
a=s.split()
for i in range(k):
a[i]=int(a[i])
start=0
for i in range(k):
p=getpos(a[i])
if p!=-1:
row=p[0]
col=p[1]
k= ③
k=k//2
t=col
for j in range(k, 0, -1):
v[row][t]=j #更新 v 数组
t=t+1
for j in range(t,t+a[i]):
q[row][j]=1
v[row][j]=0
else:
cnt=0
while
:row=start//m
col=start%m
if q[row][col]==0:
q[row][col]=1
v[row][col]=0
cnt+=1
start+=1
#输出放置情况
for i in range(n):
for j in range(m):
print(q[i][j], end=" ")
print( )
(1)、若柜子有5层,每层有10个格子。第1、第2组的物品数分别为6和2,则第二组第2个物品应放在第0层的第个格子里。(2)、请在划线处填入合适代码①②③
(3)、画框处代码有误,请改正 -
15、小李为某网吧做了一个网络拓扑设计图,如下图所示,为了提高消防安全性,利用Micro:bit开发板设计了一个烟雾报警系统,每隔10秒将信号发送到服务器并存入数据库,如果监测到烟雾值超标则打开报警装置。管理员可以通过浏览器查询所有记录。
(1)、在网络拓扑结构中①处的设备为 (单选,填字母:A .路由器 / B .调制解调器 / C .交换机)(2)、为了让智能终端能够通过无线网络传递数据,需要在智能终端中连接 (单选,填字母: A .Wi-Fi / B .IoT / C .LAN )模块(3)、智能终端测量环境中的湿度和烟雾值的部分代码如下:while True:
s = pin1.read_analog()
errno,resp = Obloq.get("putval?sv="+str(s),10000)
if errno == 200: pin8.write_digital(int(resp))
else: display.show(str(resp))
sleep(10*1000)
根据代码所示,报警装置连接在智能终端的引脚是
(4)、服务器端的部分代码如下,请在划线①处填入合适的代码。app = Flask(__name__)
@app.route('/search ')
def search'():
#从数据库中查询相关记录,并在网页中展示,代码略
@app.route( ① , methods=['GET'])
def putdata():
t=

#将收到的数据存入数据库,并从中查询报警的阈值,存入变量maxs,代码略
if int(t) > maxs:
return 1
else:
return 0
if __name__ == '__main__':
app.run(host='168.34.2.77',port=5000)
(5)、变量t用来接收数据,请为加框处选择合适的代码填入其中( ) (单选,填字母)A、request.args.get('sv') B、request.form.get('sv') C、request.args.get('s') D、request.form.get('s')(6)、根据上述代码,要查询相关记录,对应的URL为 -
16、小明利用Python对“足球世界杯历史进球前20名(图a)”数据进行分析,他先按国家分类,统计出各个国家的球员人数,并把球员人数最多国家的球员,按“场均进球”数进行排序,并用图形显示(图b)。请在划线处填入合适的代码。

图 a

图 b

列表 a 内容

字典 country 内容
import csv
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams[ 'font.sans-serif ']=[ 'SimHei'] #用来正常显示中文标签
plt.rcParams[ 'axes.unicode_minus ']=False #用来正常显示负号
=open("历史进球 .csv", 'r')
reader=csv.reader(csvfile)
a=list(reader); country={}
for i in range(1,len(a)): #按国家分类
if a[i][1] not in country:
else:
country[a[i][1]].append(i)
max=0 ; country_max=""
for i in country.keys(): #找出前 20 名中人员最多的国家,country.keys()表示字典的键
if :
max=len(country[i])
country_max=i
df=pd.DataFrame(data=[ ],columns=["姓名","进球个数","出场次数"])
for i in country[country_max]:
df=df.append({"姓名":a[i][0],"进球个数":int(a[i][2]),"出场次数":int(a[i][3])},ignore_index=True) =df["进球个数"]/df["出场次数"] #df 最后插入 1 列”场均进球”
df=df.sort_values( ) #按“场均进球”排序
plt. (df["姓名"],df["场均进球"],label="场均进球")
plt.title("前 20 名中人数最多国家球员场均进球情况")
plt.legend()
plt.xlim(0,1.2)
plt.show()
csvfile.close()
-
17、已知链表结构 a [i][0]表示元素,a [i][1]表示下一个元素的下标,head 表示开头元素,在已知有序的链表 a 中插入数值 p 。代码如下,请在划线处依次填上合适代码( )
a=[[0,1],[3,2],[5,3],[6,-1]]
head=0
p=4
tmp=head
while a[tmp][1] !=-1 and :
tmp=a[tmp][1]
a.append([p, ])
a[tmp][1]=len(a)-1
①a[tmp][0]<p;②a[a[tmp][1]][0]<p;③tmp;④a[tmp][1]
A、①③ B、①④ C、②③ D、②④ -
18、有如下 python 程序段:
import random
a=[1,3,3,8,8,10,10,14,16,17]
key=random.randint(0,9)*2
ans=-1; f=0
L=0; R=9
while L<=R:
m=(L+R+1)//2
if a[m]==key:
ans=m
break
if a[m]>key:
R=m-1
f-=1
else:
L=m+1
f+=1
运行该程序段后,关于f和ans的结果,下列说法正确的是( )
A、f可能的最小值为-3 B、f的值可能为-1 C、ans的值可能为1 D、ans的值不可能为3 -
19、有如下 python 程序段:
s= 'ccbbac '
a=[i for i in range(6)]
for i in range(5):
for j in range(5-i) :
if s[a[j]]>s[a[j+1]]:
a[j],a[j+1]=a[j+1],a[j]
print(a)
运行该程序段输出的结果为( )
A、[4, 3, 2, 5, 1, 0] B、[4, 5, 3, 2, 1, 0] C、[4, 2, 3, 0, 1, 5] D、[4, 3, 2, 5, 0, 1] -
20、元素a,b,c,d,e,f依次入栈,若第1个出栈的元素是d,则不可能是第3个出栈的元素是( )A、a B、b C、c D、e