内容正文:
2.3 程序设计基本知识
一、选择题
1.执行以下Python语句a="12";b="34";c="a"+"b"的值是( )
A."1234" B.1234 C.46 D."ab"
2.以下运算符中优先级最高的是( )
A.+ B.** C.>= D.not
3.下列选项中,正确的赋值语句是( )
A.4=M B.-M=M C.B=A-3 D.X+Y=0
4.在Python中,执行pi=3.14语句后,变量pi的数据类型是( )
A.int B.float C.str D.bool
5.有如下Python程序段:
a=[6,-9,-6,8,7,4,-3,-1]
n=len(a)
for i in range(n-1):
for j in range(n-1,i,-1):
if a[j]>a[j-1]:
a[j],a[j-1]=a[j-1],a[i]
if a[i]<0:
break
执行该程序段后,下面说法正确的是( )
A.a[0]到a[n-1]升序排序 B.a[0]到a[n-1]降序排序
C.方框里的语句总共执行了4次 D.变量i的值为4
6.某算法的部分流程图如图所示,若n的值为8,key的值为40,数组元素a[0]至a[n-1]依次存放10,20,30,40,50,60,70,80,执行这部分流程后,输出c的值为( )
A.-2 B.-1 C.0 D.1
7.某二分查找算法的Python程序段如下:
i,j = 0,len(d)-1
while i <= j:
m = (i+j)//2 # 语句①
if key == d[m]:
break
elif key < d[m]:
j = m-1
else:
i = m+1
当d为[6,12,15,18,22,25,28,35,46]时,运行该程序段查找key,语句①的执行次数小于等于2;若将d修改为[6,12,15,18,22,25,28,35,46,58],重新运行该程序段,查找同一key值,则语句①的执行次数不可能为( )
A.1 B.2 C.3 D.4
8.在Python语言中,下列合法的变量名是( )
A.abc-1 B.abc2 C.import D.2abc
9.下列Python表达式中,值为True的是( )
A.2**4-64**0.5 B.len("Python")>6
C."Chat"in"chatGPT" D.ord("A")==65
10.下列属于计算机程序设计语言的是( )
A.ACDSee B.Python C.Wave Edit D.WinZip
11.在tkinter模块中可以用来创建按钮的是( )
A.Button B.Label C.Entry D.Frame
12.在 Python 语言中,如果要获取一个1~10之间的随机整数,可调用的内部模块是( )
A.随机模块:random B.海龟作图模块:turtle
C.时间模块:time D.数学模块:math
13.若n的值为8,数组元素a[0]至a[n-1]依次存放7,11,13,17,19,23,29,31,执行如下Python程序段后,输出变量c的值不可能为( )
import random
key=random. randint(13,24)
i,j,c = 0,n-1,0
while i<=j:
m=(i+j)//2
if a[m]==key:
break
elif a[m]>key:
j=m-1
c-=1
else:
i=m +1
c+=1
print(c)
A.-1 B.0 C.1 D.2
14.在 Python 语言中,如果要用到正弦函数sin(x),可调用的内部模块是( )
A.海龟作图模块:turtle B.数学模块:math C.时间模块:time D.随机模块:random
15.已知feel={1:"love",2:"like",3:"hate"},现要在字典feel中添加一个键为:0,值为"enjoy"的元素,下列语句正确的是( )
A.feel[0]="enjoy" B.feel["enjoy"]=0 C.feel.append(0:"enjoy") D.feel={0:"enjoy"}
16.运行如下Python程序段,若输入“B”,则变量cnt的值为( )
a=[ 'A ','B ','C ','D ','E ','F ','G ']
ch=input(“输入A-G之间的字母:”)
cnt=0
for key in a:
i,j=0,len(a)-1
while i<=j:
m=(i+j)//2
if a[m]==ch:
cnt+=1
break#终止while循环
if a[m]==key:
break
elif a[m]<key:
i=m+1
else:
j=m-1
A.1 B.2 C.3 D.7
17.下列表达式的计算结果和表达式 6*3**2%8//2+1 的结果相同的是( )
A.str(len('2023 杭州亚运会')//3) B.max(“1234”)
C.int(3**2/2) D.632//10%10
二、填空题
18.程序代码如下:
n=0
x=1
while x<20:
x=x* 3
n=n+1
print(x,n)
屏幕显示结果是 。
19.用python编写程序,实现一元二次方程式ax2+bx+c=0(a≠0)的求解。输入系数a、b、c的值,输出方程可能的解。
import math
a=int(input("a:"))
b=int(input("b:"))
c=int(input("c:"))
if ① :
X1=((-1)*b+sqrt(f(a,b,c)))/(2*a)
x2=((-1)*b-sqrt(f(a,b,c)))/(2*a)
print("x1=",x1,"x2=",x2)
else:
print(“该方程式无解!”)
请把上面程序划线①处的代码补充完整。
20.在Java中,String类的equals()方法用于比较两个字符串的 。
21.在Python中, 是用于实现循环遍历的关键字。
22.在Python中,使用 关键字可以定义一个函数。
23.编程语言中的 语句用于控制程序的流程,根据条件是否满足来决定执行哪一段代码。
三、判断题
24.定义类时,在一个方法前面使用@staticmethod进行修饰,则该方法属于静态方法。( )
25.在定义函数时,某个参数名字前面带有两个*符号表示可变长度参数,可以接收任意多个关键参数并将其存放于一个字典之中。( )
26.在python中,下面程序可以正常运行。( )
n=10
s=n+'T'
27.python程序中,乘除运算的优先级高于加减运算。( )
28.在python中,运算符**的优先级最高。( )
四、操作题
29.小明要搭建一个空气质量监测系统,该系统能实现监测周围环境的PM2.5浓度值,当浓度值大于阈值时发出警报。用户通过浏览器查看实时监测的数据和历史数据。该系统结构示意图如图1所示,传感器采集的数据由智能终端经IOT模块发送给Web服务器,并存储在数据库中。执行器用于实现数据异常时的报警功能。请回答下列问题:
图1
(1)关于该空气质量监测系统及其搭建,下面说法不正确的是 (多选,填字母)。
A.该系统采集的实时数据可为用户的健康出行做参考,具有较好的社会意义
B.该系统采用B/S架构,用户需安装专门的程序才能访问该系统
C.该系统可以同时为多个用户提供数据查询服务
D.必须所有硬件搭建完成后,才能进行服务器端的程序编写
(2)服务器端获取来自智能终端提交的数据并进行相应处理,部分代码如下:
#导入相关模块,代码略
app=Flask(name_)
@app.route("/input")
def add_data():
#从数据库中获取阈值,保存在h中,代码略
pm_value=int(request.args.get("d"))
#将pm_value的值存入数据库,代码略
if pm_value>h:
return "0"
else:
return "1"
①智能终端将采集到的PM2.5浓度数据保存在变量data中,提交数据到Web服务器的URL为http://192.168.35.1:8000/input?d=data,则响应该URL请求的Web服务器IP地址为 ,服务器中视图函数 (填写函数名称)的代码会被运行。
2智能终端在接收到来自服务器返回的数据“1”时,需要给执行器发送指令实现 (单选,填字母:A.开启执行器发出警报;B.关闭执行器停止警报)
(3)系统正常运行一段时间后,用户通过浏览器查看到实时数据超过阈值时,系统却没有发出警报,造成这个问题的可能原因是(写两项): 。
(4)小明将系统中2023年的所有PM2.5浓度值导出,进行预处理后,得到如图2所示的数据(日期格式为“年-月-日”),编写程序分析每个月空气中PM2.5浓度为“合格”的情况(PM2.5浓度值不超过75表示“合格”,否则为“不合格”)。
图2 图3
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel("2023年.xlsx")
df.insert(0,"月份","") #插入列
for i in df.index:
t=df.at[i,"日期"] #通过行标签和列标签选取单个值
df.at[i,"月份"]-t[5:7]
x=df2["月份"]
y-df2["PM2.5"]
plt.bar(x,y)#绘制柱形图
#设置绘图参数,显示如图3所示的柱形图,代码略
①方框处的代码实现统计每个月PM2.5指标为合格的总天数,下面代码能实现该功能的是 (单选,填字母)
A.dfl=df.groupby("月份",as_index=False).count()
df2=dfl[df1["PM2.5"]<=75]
B.dfl=df[df["PM2.5"]<=75]
df2=df.groupby("月份",as_index=False).count()
C.dfl=df[df["PM2.5"]<=75]
df2=dfl.groupby("月份",as_index=False).sum()
D.dfl=df[df["PM2.5"]<=75]
df2=dfi.groupby("月份",as_index=False).count()
②小明分析图3发现,PM2.5浓度值为“合格”的天数最少的是 月份,并建议公众在该月份做好健康防护工作。
30.用Python编辑器打开“test\fjks7”文件夹下的文件“p7-1.py”,进行以下操作并保存。
(1)删除<l><2><3>,并在该处填写代码,使程序具有功能:计算并输出1+1/3+1/5+*+1/29的值,结果保留一位小数。(请不要更改、删除其他代码)
(2)编写完成后保存文件并关闭应用软件。
s=0
for i in <1> (1,30,2):
s=s+<2>
print("计算结果是:",<3> )
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查Python程序设计相关内容。字符串a="12",b="34",c="a"+"b"即等于"a"+"b"结果为"ab"。故本题答案是D选项。
2.B
【详解】本题考查运算符。在Python中,运算符的优先级从高到低依次为:指数运算(**)、正负号、算术运算符(+、-、*、/、//、%)、比较运算符(>=等)、逻辑运算符(not、and、or)。故答案为:B。
3.C
【详解】本题考查的是赋值语句。赋值语句格式:变量名=表达式。变量名由字母、数字或下划线等字符组成,不能以数字开头,程序的保留字不能作为变量名。4、-M、X+Y不是合法的变量名,故本题应选C。
4.B
【详解】本题考查Python数据类型相关内容。3.14为浮点型数据,所以执行pi=3.14语句后,变量pi的数据类型是浮点型(float)。故本题答案是B选项。
5.D
【详解】本题考查程序分析。该程序是个排序程序,当a[i]<0时候,停止排序。故不可能排列全部元素。排除选项A、B。方框里的语句执行了5次,故选项C错误。故选择D。
6.D
【详解】本题考查程序分析。程序运行过程:
i=0,j=7,i<=j, m=3,不满足a[m]<key,则i=0, j=2, c=-1
i=0,j=2,i<=j, m=1,满足a[m]<key,则i=2, j=2, c=0
i=2,j=2,i<=j,m=2, 满足a[m]<key,则i=3, j=2, c=1
i=3, j=2,i<=j,不满足循环条件,退出循环,c=1,故选择D。
7.C
【详解】本题考查Python程序设计相关内容。本题涉及到二分查找算法相关操作。分析程序段,推知:
数组d为[6,12,15,18,22,25,28,35,46]时,i=0,j=8,m=4,执行程序段,查找过程用二叉树表示如下:
语句①的执行次数小于等于2,该次数与key值在二叉树中的深度值一致,因此查找的数key可能是:22(1次查找)、12(2次查找)和28(2次查找)。若将d修改为[6,12,15,18,22,25,28,35,46,58],此时,i=0,j=9,m=4,查找过程用二叉树表示如下:
第一次查找的仍然是22,若往左查找,第二次是12。但若第二次往右查找,则找到的是35,而不是原先的28,然后继续第三次查找,找到25,接着进行第四次查找,找到28,此时查找过程结束。所以查找同一key值,则语句①的执行次数不可能为3,故本题答案是C选项。
8.B
【详解】本题考查变量。Python变量名必须以字母或下划线开头,后续字符可以是字母、数字或下划线,且不能是Python的关键字。A选项错误,包含不合法的字符“-”,C选项错误,import为Python的关键字,D选项错误,以数字开头。故答案为:B。
9.D
【详解】本题考查Python表达式。本题考查了Python表达式的计算及字符串操作。2**4表示2的4次方,即16;64**0.5表示64的平方根,即8;16-8等于8,不是True,A选项错误。len("Python")计算字符串"Python"的长度,为6;6>6为False,B选项错误。"Chat"和"chatGPT"大小写不同,"Chat"不在"chatGPT"中,结果为False,C选项错误。ord("A")返回字符"A"的ASCII码,为65;65==65为True,D选项正确。故答案为:D。
10.B
【详解】本题考查计算机程序设计语言。ACDSee是图像编辑软件,Python是程序设计语言,Wave Edit是音频编辑软件,Winzip是解压缩工具。故选B。
11.A
【详解】本题考查Python tkinter模块相关内容。tkinter是Python的一个标准库,用于创建GUI应用程序。Button是它用于创建按钮控件。Label是Python Tkinter标签组件之一,主要显示指定的窗口中的文本和图像。Entry用于创建单行文本框,允许用户输入文本。Frame控件是一个用于组织和管理其他控件的容器,它可以将其他控件放置在自己内部,用于创建更复杂的用户界面。故本题答案是A选项。
12.A
【详解】本题考查Python模块相关内容。turtle库是Python语言中一个很流行的绘制图像的函数库,它提供了一些简单的绘图工具,可以在标准的应用程序窗口中绘制各种图形。time是Python自带的模块,用于处理时间问题,提供了一系列的操作时间的函数。random函数是Python中一个非常实用的内置模块,它可以方便地生成各种类型的随机数,并且可以用于各种不同的场景。Python中math库提供数学函数,用于执行计算、三角函数、对数等操作。获取一个1~10之间的随机整数,可调用的内部模块是random,故本题答案是A选项。
13.D
【详解】本题考查Python程序设计相关内容。本题涉及到二分(折半)查找算法相关知识。依据二分查找,以a元素序列构造二叉树,如图所示:。分析程序段,key通过randint产生,取值范围是[13,24],当key值为13、17、19时,c值为0;当key值为18时,c值为-1;当key为[13,24]中的其他值时,c值为1;所以c的值不可能为2,故本题答案是D选项。
14.B
【详解】本题考查Python库的应用。Python的math库提供了许多数学函数,包括三角函数、指数函数、对数函数、常数等;time模块是用于处理时间的标准库,它提供了许多函数来获取、处理和格式化时间信息;random是Python内置的标准库,可利用库中的函数生成随机数据;turtle库是Python语言中自带的一个用于绘制图像的函数库。在 Python 语言中,如果要用到正弦函数sin(x),可调用的内部模块是数学模块:math。故选B。
15.A
【详解】本题考查Python字典相关内容。在Python中,字典是个可变无序的容器,标志性符号是花括号和冒号,字典的主要组成部分是键值对。字典中的键是唯一、值可以不唯一。字典是一种可变序列,可以进行增删改查等操作。字典使用大括号{}来创建,每个键值对用冒号:分隔,键和值之间用逗号,分隔。字典是通过键key插入数据,格式是:字典[key]=value,现要在字典feel中添加一个键为"0",值为"enjoy"的元素,可以使用feel[0]="enjoy"实现。故本题答案是A选项。
16.C
【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程如图所示:。运行结束,变量cnt的值为3,故本题答案是C选项。
17.C
【详解】本题考查Python表达式的运算。 6*3**2%8//2+1=6*9%8//2+1=54%8//2+1=6//2+1=4;str(len('2023 杭州亚运会')//3)='3';max(“1234”)="4";int(3**2/2)=int(4.5)=4;632//10%10=3,故选C。
18.27 3
【详解】本题考查Python基础。
累乘3赋值给变量x。第一次循环:x=3,n=1;第二次循环:x=9,n=2;第三次循环:x=27,n=3。故正确答案为:27和3。
19.f(a,b,c)〉=0
【详解】本题考查Python程序设计相关内容。一元二次方程的求解:若b*b-4*a*c>0成立,表明方程有两个不等实根;若b*b-4*a*c==0成立,表明方程有两个相等实根;若b*b-4*a*c<0成立,表明方程无解;由给定程序段知,b*b-4*a*c的值通过调用函数f(a,b,c)获得,故本题答案是:f(a,b,c)〉=0。
20.内容(content)
【详解】本题考查计算机编程。String类的equals()方法用于比较两个字符串的内容(content),即判断两个字符串在字符序列上的相等性,而不是比较它们的内存地址。与==运算符不同,==运算符比较的是对象的引用地址,而equals()方法比较的是字符串的实际字符内容。故答案为:内容(content)。
21.for 或 in
【详解】本题考查Python。在 Python 编程语言中,for和in通常结合使用来创建循环结构,实现对可迭代对象(如列表、元组、字符串等)的遍历,以依次处理其中的每个元素。故答案为:for 或 in。
22.def
【详解】本题考查Python。在Python中,使用def关键字来定义一个函数。通过def后跟函数名、参数列表以及函数体,明确了函数的功能和执行逻辑,这是Python中创建自定义函数的标准方式,方便代码的模块化和复用。故答案为:def。
23.条件
【详解】本题考查计算机程序设计语言。编程语言中的条件语句(如if语句)用于控制程序的流程,根据条件是否满足来决定执行哪一段代码,实现程序的分支逻辑。故正确答案为:条件。
24.正确
【详解】本题考查Python基础。
在Python中,当我们在类定义中使用@staticmethod装饰器来修饰一个方法时,这个方法就被定义为静态方法。静态方法不同于实例方法和类方法,它不接受类或实例的隐式第一个参数(在实例方法中通常是self,在类方法中通常是cls)。这意味着静态方法可以被调用而无需创建类的实例,但它也无法直接访问类的属性或方法(除非它们被显式地传递为参数)。
25.正确
【详解】本题考查Python基础。
在Python中,定义函数时参数名字前面带有两个*符号(例如,**kwargs)确实表示该函数可以接受任意数量的关键字参数(keyword arguments),并将这些参数存储在一个字典中。这种参数被称为可变关键字参数。这种机制在编写需要高度灵活性的函数时非常有用,因为它允许调用者传递任意数量的关键字参数,而函数内部可以以一种统一的方式处理这些参数。故正确。
26.错误
【详解】本题考查Python基础。
字符型数据和整型数据无法进行加法运算,类型不兼容。故错误。
27.正确
【详解】本题考查Python运算符相关内容。在Python中,算术运算符有:加、减、乘、除、取余等。乘除运算的优先级高于加减运算。故本题答案是:正确。
28.正确
【详解】本题主要考查Python运算符优先级。在Python中,运算符**(幂运算符)的优先级最高,表述正确。
29. BD 192.168.35.1 add_data或add_data() B 执行器有故障;执行器与智能终端之间的连接有故障; D 12
【详解】本题考查程序分析。(1)B/S架构意味着用户只需要通过浏览器就可以访问系统,无需安装专门的程序。在软件开发中,通常采用的是迭代和增量的开发方法,这意味着服务器端的程序编写可以在硬件搭建完成之前就开始,并且可以根据硬件的实际情况进行调整和优化。故选择BD。(2)根据题目中的URL地址为http://192.168.35.1:8000/input?d=data,可知IP地址为192.168.35.1。(3)根据代码@app.route("/input")和def add_data()中的路由函数定义,可是视图函数为add_data。(4)根据代码 if pm_value>h: return '0' else: return '1' 当浓度值大于阈值时发出警报,小于等于就关闭。故选择B。(5)执行器执行报警,当不发出警报时,可能执行器本身有故障。智能终端发出信号控制执行器,当两者连接有故障时候,执行器收不到信号,也不会报警。(6)A选项错误,应该先筛选后分类统计。B选项错误,数据集对象有错,应该是df1分类统计,而不是df。C选项错误,应该调用count函数,而不是sum函数。故选择D。(7)根据图3,发现12月份的柱形图最低,说明合格天数最少,故为12。
30. range 1/i s
【详解】本题考查Python编程基础。<l>调用range函数生成30以内的奇数。即1-29。故填写range。<2>s初始化0后,累加1/i。故填写1/i。<3>最后输出结果s。故填写s。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$