内容正文:
3.2 Python语言程序设计
一、选择题
1.下列Python表达式的值最小的是( )
A.abs(-13/4) B.round(13/4,2) C.13//4 D.13%4
2.有如下Python程序段:
import random
a=[0]*6
i=0
while i<6:
a[i]=random.randint(1,9)
for j in range(i):
if a[i]==a[j]:
i-=1
i+=1
print(a)
该程序段执行后,列表a的值可能是( )
A.[7,1,6,3,2,1] B.[8,9,1,3,0,4]
C.[6,3,5,2,4,1] D.[5,7,3,3,8,2]
3.某智能终端接上声音传感器,能接收拍手时发出的声音,并在主板上显示“幸福”图形,没有声音时则显示“难过”图形。部分代码如下:
3
4
5
6
7
8
9
while True:
voice=pin0.read_analog()
if voice>350:
display.show(Image.HAPPY) #显示“幸福”图形
sleep(2000)
else:
display.show(Image.SAD) #显示“难过”图形
若声音传感器和主板的连接正常,下载并运行该代码,发现拍手发出声音后,主板上的“难过”图形并没有变为“幸福”图形,则下列选项中,可能是问题原因的是( )
A.标号5所在行代码中“350”值太大 B.标号7所在行代码中“2000”值太小
C.标号7所在行代码中“sleep(2000)”多余 D.标号9所在行代码后少了一行代码“sleep(2000)”
4.以下Python程序执行后,若输入1和2,则输出结果是( )
a=int(input())
b=int(input())
print(a+b)
A.1 B.2 C.3 D.12
5.有如下 Python 程序段:
s = input(); ans = ""
for i in s:
if 'a'<= i <='z':
ans = ans + i
elif '0' <= i <= '9':
ans = i + ans
print(ans[0:4])
执行该程序段,输入“4P3aQb5”,则运行结束后,输出结果为( )
A.534 B.534a C.34b D.435a
6.以下属于关系运算符的是( )
A./= B. == C.** D.%
7.有如下Python程序段:
from random import randint
a=[1]*8
p=randint(1,7)
a[0]=p
for i in range(1,len(a)):
a[i]=a[i-1]+randint(1,5)*2
for i in range(len(a)-1,p,-1):
a[i]=a[i-1]
a[i-1]=p
print(a)
执行该程序段后,输出的结果可能是( )
A.[4,10,18,4,20,22,24,26] B.[6,14,22,32,40,44,6,46] C.[1,1,7,11,19,31,33,41] D.[2,5,2,7,17,19,21,29]
8.下列代码运行后,输出的结果为( )
s = "1,6,5,3,4"
n = 0
for i in range(0, len(s), 3):
j = i
while j < len(s):
n += len(s)-j
j += 3
print(n)
A.9 B.15 C.24 D.30
9.以下伪代码执行后,变量a和b的值分别是( )
A.a=78 b=65 B.a=65 b=78 C.78 65 D.65 78
10.以下关于对象的叙述,错误的是( )
A.对象有名称和类型 B.对象有属性和方法
C.对象有属性和属性值 D.每个对象都有相同的属性和方法
11.当飞船速度v>=7.91,输出“飞船成功飞行!”,否则输出“飞船不能升空!”。
v=float(input("请输入速度(千米/秒):")
if ①
print("飞船成功飞行!")
else:
print("飞船不能升空!")
下列选择中①处语句正确的是( )
A.v>=7.91: B.v>=7.91 C.v<7.91: D.v<=7.91:
12.在Python语言中,算术表达式“72%10”的执行结果是( )
A.10 B.7 C.0 D.2
13.下列Python表达式值最小的是( )
A.2024//10 ** 2-3*4 B.int(abs(-4.9))
C.max([5,7,1]) D.len("Python"[1:])
14.变量是在程序运行过程中值允许改变的量。下列选项中,可以用作Python变量名的是( )
A.3Dmax B.if C._a#123 D.Teacher3
15.下列代码的输出结果是( )
m=[6,7, "你好!", "123"]
m. insert(2,3)
print(m)
A.[6,7, "你好!", "123", 2, 3] B.[6,3,7, "你好!", "123"] C.[6, 7, "你好!", "123", 3] D.[6,7,3, "你好!", "123"]
16.某多选题有A、B、C三个选项,程序阅卷时,各选项采用True和False来表示是否进行了选择(例如:变量a的值为True时,表示选择了A选项;变量b的值为False,则表示未选择B选项)。若该题正确答案为“BC”,下列表达式中能判定考生该题答案全部正确的是( )
A.a and b and c B.a or b and c C.not a and b and c D.not a or b and c
二、填空题
17.在Python中,使用 可以快速生成一个特定范围内的数列。
18.计算表达式1*2+3*4+5*6+7*8+9*10的值,则程序中画线处的表达式应为 。
i=1
s=0
while i<=5:
i=i+1
print(s)
19.为Python程序文件python3.py补充语句,实现将a与b的积赋值给c。
python3.py文件内容为:
a = 8
b = 5
c =
print(c)
20.在python中,变量的命名需遵循一定规则:①必须 以或 开头,后面可以是字母,数字或下划线;②区分大小写;③不能使用 。
21.写出该式子的表达式:
三、判断题
22.创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,)。( )
23.我们可以把Python程序保存到文件夹中,便于以后重复使用,一般Python程序源文件的扩展名是“.py”。( )
24.Python语言中,字典这种数据类型每个元素包含键和值两部分,如{姓名:张三,年龄:18}。( )
25.在Python中,变量命名的时候可以用下划线开头,例如,_a就是一个合法的变量。( )
26.已经构建发布的模块可以直接使用。( )
四、操作题
27.小张搭建一个智慧农场系统,并且每隔一定时间采集室内温度数据,持续运行一周。他想编写程序统计这一周内,每天室温连续大于某个温度T的持续时长。从传感器采集到的数据返回的数据格式如下图所示。通过requests库的json()方法,就可以将JSON格式的数据转化为字典。采集温度数据相关的代码如下:
@app.route("/get", method=['GET'])
def getdata():
sensorid=int(request.args.get('id'))
…
wdjson=json.dumps(dset)
return wdjson
if _ name _=='_ main _':
app.run(host="0.0.0.0", port=8080)
(1)已知该系统的服务器IP地址是192.168.15.8,要获得ID编号是1的传感器数据,小张需要在浏览器中输入的URL是 。
(2)为实现以上功能,小张编写了如下的Python程序,请在程序画线处填入合适的代码。
import requests
url=" " # 此处填写URL
T=30.0
r=requests.get(url)
data=r.json()
maxsc=0
t=0
wdlist=data["value"]
for i in range(len(wdlist)):
if wdlist[i]["sensorvalue"]> ① :
t+=1
else:
②
if t>=maxsc:
maxsc=t
print('室温大于 T 的连续最大时长是{}'.format(maxsc))
28.小华要搭建苗圃大棚环境监控系统。该系统中的智能终端从服务器获取湿度阈值。根据该阈值和传感器采集的空气湿度值控制加湿器,并将湿度值等数据传输至Web服务器,存储到数据库中。网络应用软件的实现架构是B/S架构,用户可通过浏览器查询实时和历史数据。硬件按如下方式连接:湿度传感器和加湿器接入智能终端,智能终端通过IoT模块连接到服务器。请回答下列问题:
(1)要完成该系统的搭建,下列需要编写的程序是 (单选,填字母:A.客户端程序/B.服务器端程序)。
(2)下列关于该系统中数据的说法,正确的是 (多选,填字母)。
A.数据无法从服务器端传输至智能终端
B.该系统的数据和程序都应存储在数据库中
C.通过浏览器查看湿度的历史数据需要访问数据库
D.若IoT模块损坏,则传感器采集的数据无法传输到智能终端
E.若IoT模块损坏,则该系统无法正常控制加湿器的开与关
(3)植物生长的影响因素除了湿度,还有温度、CO₂浓度、O₂浓度等,为促进大棚植物的生长,可以增设哪些硬件设备来改善生长环境?请写出能解决其中一项问题的传感器和执行器,并描述其功能。
(4)小华将系统采集的湿度数据导出到humidity_data.xlsx中,部分数据如图a所示,并分析每天的平均湿度,部分程序代码如下,请在划线处填入合适代码。
图a
图b
#导入相关模块,读取如图a所示的数据,保存到DataFrame对象df中,代码略
df.insert(0,"日期","")
for i in df.index:
df.at[i,"日期"]=df.at[i,"采集时间"][:10]
df1=df.drop("采集时间",axis=1)
g=df1.groupby("① ",as_index=False)
df2=g. ②
(5)制作如图b所示的图像,部分代码如下。
df2=df2.sort_values("湿度(%)",ascending=False)
plt.title("2024年5月份平均湿度最高的5天情况对比分析")
plt.show()
则加框处的代码可以为 (单选,填字母)
A.
x=df2.tail(5)["日期"]
y=df2.tail(5)["湿度(%)"]
plt.plot(x,y)
B.
x=df2.tail(5)["日期"]
y=df2.tail(5)["湿度(%)"]
plt.bar(x,y)
C.
x=df2.head(5)["日期"]
y=df2.head(5)["湿度(%)"]
plt.plot(x,y)
D.
x=df2.head(5)["日期"]
y=df2.head(5)["湿度(%)"]
plt.bar(x,y)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查Python基础。
A的结果为3.25;B的结果为3.25;C的结果为3;D的结果为1,其中最小的是1。故正确答案为:选项D。
2.C
【详解】本题考查Python基础。
随机数生成1到9,故不可能出现0。排除选项B。由于程序功能不可能出现两个相同的数,故排序选项A、D。故正确答案为:选项C。
3.A
【详解】本题考查程序分析。
标号5所在行代码中“350”值太大:如果拍手产生的声音在传感器上的读数确实小于350,那么这个阈值就可能设置得太高,导致无法触发“幸福”图形的显示。这是一个可能的原因。
标号7所在行代码中“2000”值太小:这个值控制的是显示“幸福”图形后的暂停时间,与是否显示“幸福”图形无直接关系。
标号7所在行代码中“sleep(2000)”多余:虽然sleep(2000)可能不是必需的,但它不会导致“难过”图形不变为“幸福”图形。
标号9所在行代码后少了一行代码“sleep(2000)”:这同样不会影响是否显示“幸福”图形,只是可能影响用户体验或调试观察。
故正确答案为:选项A。
4.C
【详解】本题考查Python程序执行。input接收的数据类型是字符串类型,int函数用于将对象转换为整型。因此a=1,b=2,a+b=3。故选C。
5.B
【详解】本题考查Python程序。程序中,对输入的字符串逐个字符进行判断和处理:如果字符是小写字母,则添加到结果字符串的末尾;如果字符是数字,则添加到结果字符串的开头。根据输入“4P3aQb5”,按照上述逻辑处理,得到的结果字符串为“534ab”,输出的是ans[0:4]=534a。故答案为:B。
6.B
【详解】本题考查的是Python关系运算符。在Python中常见的关系运算符:==、>、<、>=、<=、!=。/=是除法赋值,**是幂乘,%是求余。故选B。
7.B
【详解】本题考查Python程序。程序中首先创建了一个包含8个元素的列表a,并将第一个元素初始化为一个随机数p。然后,通过循环依次计算列表中后续元素的值,每个元素的值为前一个元素的值加上一个随机数乘以2。接着,又通过一个循环将列表中从第p个元素开始到倒数第二个元素的值向后移动一位,并将原来位置上的值替换为p。最后,输出列表a,最终程序结束时,一定有a[p]=p。A选项错误,不存在a[p]=p。C选项错误,由输出结果可知,p=1,但此时a[5]-a[4]=12,由题中a[i]=a[i-1]+randint(1,5)*2可知,该情况不可能存在。D选项错误,由输出结果可知,p=2,但a[1]-a[0]=3,由题中a[i]=a[i-1]+randint(1,5)*2可知,该情况不可能存在。故答案为:B。
8.D
【详解】本题考查Python程序设计相关内容,分析程序段,其运行过程如图所示:
故本题答案是D选项。
9.D
【详解】本题考查Python程序。输入a=78,b=65,因为78>65,所以执行“a>b”后的语句,先将a(78)赋给m,再将b(65)赋给a,最后将m(78)赋给b,此时a=65,b=78。故答案为:D。
10.D
【详解】本题考查Python程序设计相关内容。对象(Objections)是Python中数据的抽象,Python中所有的数据均可以用对象或者是对象之间的关系来表示。每个对象均有标识符(identity)、类型(type)、值(value)。对象有名称和类型,有属性和方法,有属性和属性值。同一类中的每个对象都有相同的属性和方法,不同类中的对象属性和方法不同。故本题答案是D选项。
11.A
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,①处缺少判断飞船速度的条件表达式,由:飞船速度v>=7.91,输出“飞船成功飞行!”知,此处应填写:v>=7.91:,故本题答案是A选项。
12.D
【详解】本题考查Python运算符与表达式相关内容。“%”是取余运算,“72%10”的结果是2,故本题答案是D选项。
13.B
【详解】本题考查Python程序设计相关内容。A选项,2024//10**2-3*4-->2024//100-3*4-->20-12-->8。B选项,int(abs(-4.9))-->int(4.9)-->4。C选项,max([5,7,1])-->7。D选项,len("Python"[1:])-->len("ython")-->5。四个选项中,表达式值最小的是B选项。故本题答案是B选项。
14.D
【详解】本题考查Python变量相关内容。Python变量命名规则是:变量名只能包含字母、数字和下划线。变量名可以以字母或下划线开头,但不能以数字开头。变量名不能包含空格,但可以使用下划线来分隔其中的单词。不要使用Python关键字和函数名作为变量名。AC选项,不符合变量命名规则。B选项是关键字,不能用作变量名。D选项符合变量命名规则,可以使用。故本题答案是D选项。
15.D
【详解】本题考查Python程序设计相关内容。insert(index,obj)函数作用是在index位置插入元素obj,因列表下标从0开始,m=[6,7,"你好!", "123"],执行m. insert(2,3)后,在m下标为2的位置插入3,即m=[6,7,3, "你好!", "123"],故本题答案是D选项。
16.C
【详解】本题考查Python逻辑表达式相关内容。正确答案为“BC”,说明a错误且b与c均正确,其逻辑表达式应该为not a and b and c(C选项)。A选项,a and b and c意味着abc均正确,选项错误;B选项,a or b and c意味着a正确或者b与c均正确,选项错误;D选项,not a or b and c意味着a不成立或b与c均正确,选项错误。故本题答案是C选项。
17.range()
【详解】本题考查Python函数。在Python中,range()函数可以快速生成一个特定范围内的数列。通过指定起始值、终止值和步长等参数,range()函数能够灵活地创建符合需求的数字序列。例如,range(5)会生成包含0到4的数列;故答案为:range()。
18.s=s+(2 * i-1)*(2 * i)
【详解】本题考查Python程序设计相关内容。分析程序段,其功能是计算表达式1*2+3*4+5*6+7*8+9*10的值,当i<=5成立时,执行重复求和操作,i为当前项,加数为(2 * i-1)*(2 * i),其求和公式为:s=s+(2 * i-1)*(2 * i),故本题答案是:s=s+(2 * i-1)*(2 * i)。
19.a*b
【详解】本题考查的是Python表达式。*表示乘,实现将a与b的积赋值给c,即c =a*b。
20. 字母 下划线 保留字
【详解】本题考查Python变量的命名。在python中,变量的命名需遵循一定规则:①必须字母以或下划线开头,后面可以是字母,数字或下划线;②区分大小写;③不能使用保留字。
21.(4*a*c-b**2)/(2*a)
【详解】本题考查Python表达式。在Python中,乘运算符是*,除运算符是/,幂运算符是**,因此该式子的表达式是(4*a*c-b**2)/(2*a)。
22.正确
【详解】本题考查Python基础。
在Python中,要创建一个只包含一个元素的元组,确实需要在该元素后面加上一个逗号。这是因为在Python中,圆括号()通常用于定义元组(tuple)或者作为函数调用的一部分,但如果没有逗号来明确指示这是一个元组,Python解释器可能会将圆括号内的内容解释为表达式或仅仅是一个普通的值,而不是元组。故正确。
23.正确
【详解】本题考查Python基础。
Python程序源文件通常被保存为具有“.py”扩展名的文件。这样做可以让我们轻松地编写、编辑和保存Python代码,以便于以后重复使用或进行进一步的开发。故正确。
24.正确
【详解】本题考查Python字典数据类型。Python语言中,字典这种数据类型每个元素包含键和值两部分,如{姓名:张三,年龄:18}。表述正确。
25.正确
【详解】本题考查Python变量相关内容。在Python中变量名是由字母、数字、下划线组成,只能以字母或下划线开头,不能包含特殊符号,不能是关键字。_a是合法变量。故本题答案是:正确。
26.错误
【详解】本题考查Python模块的导入。已经构建发布的模块不可以直接使用,需要使用import关键字进行导入后才可以使用,故表述错误。
27. http://192.168.15.8/get?id=1 T t=0
【详解】本题考查Python综合应用。
(1)在这个系统中,通过/get路径来获取数据,并且需要通过id参数指定传感器的编号。服务器的IP地址是192.168.15.8,所以完整的URL应该是http://192.168.15.8/get?id=1,这样才能准确地向服务器请求编号为1的传感器数据。故答案为:http://192.168.15.8/get?id=1。
(2)在判断温度是否大于给定的阈值T时,应该与变量T进行比较,所以这里填写T,以确定当前采集到的温度值是否大于设定的温度值。故答案为:T。当当前温度小于等于阈值时,意味着连续大于阈值的时段结束,所以需要将连续时长t重置为0,以便重新开始统计下一段连续大于阈值的时长。故答案为:t=0。
28. B CE 温度传感器、空调;根据植物生长适合的温度阈值和温度传感器采集的温度值控制空调升温与降温。
CO2传感器、新风系统(排风系统);根据植物生长适合的CO2浓度阈值和CO2传感器采集的浓度值控制新风(排风)系统的开关来调节大棚内部CO2浓度。
O2传感器、制氧机;根据植物生长适合的O2浓度阈值和O2传感器采集的浓度值控制制氧机的开关来调节大棚内部O2浓度。 日期 mean() C
【详解】本题考查程序分析。
(1)该系统涉及到服务器端的数据处理(如接收智能终端的数据,处理数据库查询等),以及服务器向智能终端发送配置信息(如湿度阈值),故需要编写服务端程序,故正确答案为:选项B。
(2)A错误,因为智能终端会定期或按需从服务器获取数据(如湿度阈值),同时向服务器发送数据(如实时湿度值)。B错误,不是所有数据都应该存储在数据库中,程序(如服务器上的处理程序、智能终端的固件等)一般存储在服务器的文件系统或其他存储设备上,而非数据库。C正确,历史数据存储在数据库中,用户通过浏览器访问Web服务器,Web服务器再查询数据库以获取历史数据并展示给用户。D错误,如果IoT模块损坏,但智能终端和传感器连接正常且无其它故障,则并不影响传感器可以正常的采集数据,并传输到智能终端。E正确,IoT模块损坏会影响智能终端与服务器的通信,如果智能终端的控制逻辑依赖于从服务器获取的湿度阈值,那么IoT模块的损坏将间接影响加湿器的控制。故正确答案为:选项C、E。
(3)传感器:温度传感器。用于实时监测大棚内的温度,确保植物在适宜的温度范围内生长。执行器:温控风扇或加热器。根据温度传感器采集的数据,当温度过高时,温控风扇自动开启以降低温度;当温度过低时,加热器自动开启以提升温度。根据题目描述,阐述合理即可。
(4)首先需要按照日期对湿度数据进行分组,并计算每个组的平均值。代码中的①处应填写"日期",以便按日期分组;②处应填写"mean()",以计算每个组的平均值。
(5)图b显示为折线图,故排除选项B、D,并且是降序显示,取前5条数据,调用head方法,故排除选项A。故正确答案为:选项C。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$