内容正文:
2.4 可以复用的代码
一、选择题
1.以下哪个Python代码片段可以正确实现死循环( )
A.while True: pass B.for i in range(5): pass C.while False: pass D.for i in range(-1, 5): pass
2.将1/2gt2转化为python表达式,下列选项正确的是( )
A.1/2g*t2 B.1/2g*t**2 C.1/2gt**2 D.1/2*g*t**2
3.有如下Python程序段:
a=int(input("请输入正整数:"))
sum=s=0
while a>0:
sum+=a%10
a∥=10
s=s+1
if s*sum==36:
print("通过检验!")
else:
print("不通过!")
如果该程序段执行后输出的结果是“通过检验!”,则输入的整数n可能是( )
A.146 B.2040 C.1323 D.29
4.设有bl=True,b2=True,b3=False,以下表达式值为False的是( )
A.bl or b2 and b3 B.(False or b2) and (b2 or b3)
C.False or not bl and b2 or not b3 D.not bl and not b2
5.在Python语言中,下面程序段运行结果是( )
s=1
i=1
while i<=5:
s=s*i
i=i+1
print(s)
A.1 B.5 C.24 D.120
6.有如下Python程序段:
a=2
b=3
a*=b
a+=b
print(a)
上述程序段运行之后a的值是( )
A.2 B.3 C.8 D.9
7.有如下Python程序段:
from random import randint
st=[""]*4;ys="ABCD";cz=[1,1,1,1]
x = randint(0,3) #随机生成0、1、2、3
cz[x]=0
top=-1;pos=0
for i in range(len(cz)):
if cz[i]== 0 and top>-1:
top=top-1
elif cz[i]==1:
top=top+1;st[top]= ys[pos]
pos=pos+1
print(st[: top + 1])
执行该程序段后,输出结果不可能的是( )
A.['A','B'] B.['B','D'] C.['B','C'] D.['A','B','C']
8.下列Python程序的功能是在数据有序的链表中插入一个整数,使链表中的数据仍保持有序
a=[[8,3],[6,0],[2,1],[11,4],[15,-1]]
n-int(input("请输入一个整数:"))
p=q=head=2
if n<=a[head][0]:
a.append([n,head])
①
else:
while p!=-1 and ② :
q=p
p=a[p][1]
a.append([n,p])
a[q][1]=1en(a)-1
划线处应填入的代码是( )
A.①head=a[p][1] ②n>a[p][0] B.①head=a[p][1] ②n>a[q][0]
C.①head=len(a)-1 ②n>a[p][0] D.①head=len(a)-1 ②n>a[q][0]
9.有如下Python程序段
from random import randint
a=[0]*5
for i in range(5):
a[i]=randint(-4,4)*2+1 #randint(a,b)随机生成一个[a,b]范围内的整数
for i in range(1,5):
k=a[i]
j=i-1
while j>=0 and a[j] < k:
a[j+1]=a[j]
j-=1
a[j+1]=k
执行该程序段后,列表a的值可能是( )
A.[-9,5,3,1,1] B.[7,5,1,1,-5] C.[7,3,0,-5,-1] D.[-3,-1,1,3,9]
10.s=,其中n为正整数,计算s值的Python程序如下
s=1;i=1;t=1
while i<2*n-1:
print(s)
方框中的代码由以下三部分组成:①s+=t ②i+=2 ③t=-t/(i*(i-1))
下列选项中,代码顺序正确的是( )
A.③①② B.①②③ C.②①③ D.②③①
11.小曲使用Python 编写了一个计算某月天数的程序,她先将十二个月的天数存储到列表中,程序会根据用户输入的月份,输出该月份有多少天。程序第3行划线处应填写的代码是( )
A.n=d[m] B.n=d[0] C.n=d[m+1] D.n=d[m-1]
12.某学校举行运动会,各运动员的成绩存储在"ydh.xlsx"文件中,部分数据如图所示。编写Python程序,输入年级后统计该年级班级总得分前三的班级。
import pandas as pd
df=pd.read_excel("ydh.xlsx")
gra=input("请输入年级")
print(df1)
方框中代码由下列语句中的部分语句组成:
①df1=df1.groupby("班级", as_index=False).得分.sum()
②df1 = df.groupby("班级", as_index=False).得分.sum()
③df1 = df[df["年级"]==gra]
④df1=df1.sort_values("得分", ascending=True).head(3)
⑤df1 = df1.sort_values("得分", ascending=False).head(3)
要实现上述功能,下列选项正确的是( )
A.①③⑤ B.②③④ C.③①⑤ D.③①④
13.小曲同学在学习了Python中的字典数据类型之后,编写了用户通讯录管理程序,下面是程序的部分代码,关于这个程序说法错误的是( )
A.定义的字典addressBook中,键是姓名,值是电话号码
B.在字典addressBook中,电话号码的数据类型是字符串
C.运行程序后输出结果为:|李明:|13523451234′,'张红':'13623213434'}
D.程序第3行作用是将键李明'所对应的值修改为'13887653457'
14.下列Python表达式的值最大是( )
A.abs(3**2-10) B.int("20"+"24") C.119%8*10+210//10 D.len ("2024"*2)
15.在 Python 语言中,运行以下程序段后,输出的结果是( )
L= [ 'a', 'b','c','d']
del (L [1])
print (L)
A.['b','c','d'] B.['a','b','c'] C.['a', 'b','d'] D.['a','c','d']
16.在Python中,如果a = 1,b = 2,c =-2,则下列表达式的值为False的是( )
A.a>b or b>c B.a>c and b>a C.c<a<b D.a<b and a<c
二、填空题
17.在Python中, 函数可以用来实现循环的延迟执行。
18.在Python中,is关键字用于比较两个对象的 。
19.在Python中,用于实现循环结构的关键字有for和 。
20.在数字逻辑中,逻辑与运算通常用符号 表示。
21.在现实世界中,由于数据采集、数据存储、数据操作等诸多方面的原因,可能使数据有所缺失,即数据中某个或某些特征的值是不完整的。检测数据缺失值的代码片段如下所示,其中表示输出检测缺失值结果的代码行号是 。
1 import pandas as pd
2 str_data=pd.Series(['小明','小张','小赵',None,'小王'])
3 print(str_data)
4 print(str_data.isnull())
三、判断题
22.定义Python函数时必须指定函数返回值类型。( )
23.在Python 3中,使用内置函数input()接收用户输入时,不论用户输入什么格式的内容,一律按字符串进行返回。( )
24.已知x = 3,那么执行语句x+=6之后,x的内存地址不变。( )
25.下列程序的运行结果为123。( )
b=int('123')
print(b)
26.在Python语言中,range(4,9)中元素的个数是4个。( )
四、操作题
27.李老师需要收集学生选考科目的首考成绩,以便分析。学生在图a所示的网页中输入对应学科的成绩,提交到如图 b 所示的数据库中。
图a 图b
(1)将学生的选考科目首考成绩输入,提交后存入数据表中,则该数据表至少需要 个字段,该数据属于 (单选,填字母:A.结构化数据/B.半结构化数据/C.非结构化数据)。
(2)将首考成绩输入,提交后存入数据库中,代码如下,请在画线处填入合适的代码。
import sqlite3
from flask import *
app=Flask(_name_)
@app.route('/')
def index():
return render_template('input.html')
@app.route(/success',methods=['① '])
def success():
get_xm=request.form.get('xm')
get_wl=int(request.form.get('wl'))
get_hx=int(request.form.get('hx'))
get_sw=int(request.form.get('sw'))
get_zz=int(request.form.get('zz'))
get_Is=int(request.form.get('ls'))
get_dl=int(request.form.get('dl')
get_js=int(request.form.get('js'))
db=sqlite3.connect('data/data.db')
cur=db.cursor()
cur.execute("insert into ② (name,physics,chemistry,biology,politics,history,geography,technology)values(%s',%d,%d,%d,%d,%d,%d,%d)"%(get_xm,get_wl,get_hx,get_sw,get_zz,get_ls,get_dl,get_js))
db.commit()
return render_template('success.html',name=get_xm)
if_name_=='_main_':
app.run(host='192.168.169.1',port=80)
(3)下面选项中,模板文件success.html的代码可能是 。
A.
B.
C.
(4)张明想要输入自己的首考成绩,在浏览器地址栏中输入“http://192.168.169.1”,出现“无法打开网页”的错误,造成该问题的原因是 。
28.编写Python程序,该程序要实现的功能如下:有一个整数,它加上100后是一个完全平方数,再加上168仍是一个完全平方数,请问该数是多少?
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查Python循环。死循环是指永远不会自行结束的循环。A选项中,while True: pass,由于条件True始终为真,所以会一直执行循环体中的代码,形成死循环。B选项for i in range(5): pass,range(5)会产生0到4的序列,循环会在遍历完这个序列后自动结束,不是死循环。C选项while False: pass,条件False始终为假,不会执行循环体,不是死循环。D选项for i in range(-1, 5): pass,range(-1, 5)会产生-1到4的序列,循环会在遍历完这个序列后自动结束,不是死循环。故答案为:A。
2.D
【详解】本题考查Python基础。
Python中乘法的星号,不能省略。故排除选项A、B、C。故正确答案为:选项D。
3.C
【详解】本题考查Python基础。
本题程序的功能是判断整数a的各位数字之和与整数a的位数的乘积是否为36,若乘积为36,则输出信息“通过检验!”,否则输出信息“不通过!”,整数1323的各位数字之和为1+3+2+3=9,位数为4,它们的乘积为36,因此答案为C。
4.D
【详解】本题考查Python表达式。A 选项:b1 or b2 and b3等价于b1 or (b2 and b3),b2 and b3为False,b1为True,所以True or False结果为True。B 选项:(not b1 or b2) and (b2 or b3),not b1为False,所以(False or b2) and (b2 or b3),即(True) and (True),结果为True。C 选项:False or not b1 and b2 or not b3,not b1为False,所以False or False and b2 or not b3,False and b2为False,所以False or False or not b3,not b3为True,所以False or False or True结果为True。D 选项:not b1 and not b2,not b1为False,not b2为False,所以False and False 结果为False。故答案为:D。
5.D
【详解】本题考查Python基础。
该程序功能为:累乘循环变量i到s。i值初始化为1,循环条件为i<=5,i每次循环加1,故累乘s=1*2*3*4*5=120。故正确答案为:选项D。
6.D
【详解】本题考查Python程序。首先,a=2,b=3。然后,a*=b,即a=a*b=2*3=6。接着,a+=b,即a=a+b=6+3=9。最后打印出a的值为9。故答案为:D。
7.B
【详解】本题考查程序分析。for循环执行执行4次,进入分支结构后,if分支最多执行一次,elif分支执行最多执行3次。要想取到ys[3](字符D),并赋值为st[top],且在pos初始化为0情况下,elif分支至少执行4次,这是不可能的,故字符D不可能出现。故正确答案为:选项B。
8.C
【详解】本题考查Python程序。首先分析程序逻辑,程序要在有序链表中插入一个整数n并保持有序。如果n小于等于表头元素的值,就在表头插入。否则,通过循环找到合适的插入位置。对于①处,如果n小于等于表头元素,要更新表头指针,应将表头指针指向新插入元素,即head=len(a)-1。对于②处,在循环中要判断n是否大于当前指针所指元素的值,即n>a[p][0]。故答案为:C。
9.B
【详解】本题考查程序分析。该程序功能,随机生成奇数赋值给列表a,不会生成偶数。故排除选项C。如果a[i-1]<a[i],则a[i]=a[i-1]。故不可能出现a[i-1]<a[i]结果,故排除选项A、D。故正确答案为选项B。
10.D
【详解】本题考查程序分析。
表达式首项是分母为3!(由于s初始化为1),故先更新i的值。故 ②排第一。然后计算表达式t累乘,故 ③排第二。最后将t值累加到变量s,故①排第三。故正确答案为选项D。
11.D
【详解】本题主要考查Python程序的执行。Python中,列表的索引从0开始,月份比其所在的索引号大1,因此程序第3行划线处应填写的代码是n=d[m-1],故本题选D选项。
12.C
【详解】本题考查Python程序。要实现统计指定年级班级总得分前三的班级的功能,代码需要进行以下步骤:过滤出指定年级的数据。按班级分组并计算各班级的总得分。对总得分进行排序,取前三名。题目给出的语句中,完成这三个步骤的正确组合如下:③df1=df[df["年级"]==gra]:过滤出指定年级的数据。①df1=df1.groupby("班级",as_index=False).得分.sum():按班级分组并计算各班级的总得分。⑤df1=df1.sort_values("得分",ascending=False).head(3):对总得分进行排序,取前三名。故答案为:C。
13.C
【详解】本题考查Python字典相关内容。字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key-->value对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中,格式如下所示:d = {key1 : value1, key2 : value2 }。由图可知,字典addressBook中,键是姓名,值是电话号码,电话号码的数据类型是字符串,通过第3行代码,将'李明'所对应的值由'13523451234′修改为'13887653457',运行程序后输出结果为:{'李明':'13887653457','张红':'13623213434'},C选项错误。故本题答案是C选项。
14.B
【详解】本题考查Python程序设计相关内容。A选项,abs(3**2-10)-->abs(9-10)-->abs(-1)-->1。B选项,int("20"+"24")-->int("2024")-->2024。C选项,119%8*10+210//10-->7*10+210//10-->70+21-->91。D选项,len ("2024"*2)-->len ("20242024")-->8。故本题答案是B选项。
15.D
【详解】本题考查的是Python列表操作。列表索引号从0开始,del (L [1])表示删除索引号为0的元素。L= [ 'a', 'b','c','d'],del (L [1])将列表中'b'元素删除。最后L= [ 'a', 'c','d'],故选D。
16.D
【详解】本题主要考查Python表达式的运算。逻辑运算符and左右两边均为True,其值才为True;逻辑运算符or左右两边均为False,其值才为False。如果a = 1,b = 2,c =-2,a>b or b>c值为True,a>c and b>a值为True,c<a<b值为True,a<b and a<c值为False。故选D。
17.time.sleep()
【详解】本题考查Python函数的描述。Python中,time.sleep()函数可以用来实现循环的延迟执行。
18.身份(或引用、内存地址)
【详解】本题考查Python基础。
在Python中,is 关键字用于比较两个对象的身份(identity),即它们是否是同一个对象。这与使用 == 操作符进行值比较不同,== 比较的是两个对象的值是否相等,而 is 比较的是两个对象在内存中的地址是否相同,即它们是否是同一个对象的引用。故正确答案为:身份(或引用、内存地址)。
19.while
【详解】本题考查Python基础。
在Python中,用于实现循环结构的关键字有for和while。for循环通常用于遍历任何序列(如列表、元组或字符串)或其他可迭代对象,而while循环则会在给定条件为真时重复执行一段代码块。故正确答案为:while。
20.∧
【详解】本题考查运算符。逻辑与运算通常用符号 ∧ 表示。它是一种二元逻辑运算,当两个操作数都为真时,结果才为真。故答案为:∧。
21.4
【详解】本题考查数据处理。1、导入pandas库。2、构造一个Series对象。3、打印输出str_data。4、调用isnull方法,检测缺失值。故正确答案4。
22.错误
【详解】本题考查Python基础。
在Python中,定义函数时不需要显式指定函数的返回值类型,这与一些静态类型语言(如C++、Java或TypeScript)不同。Python是一种动态类型语言,这意味着变量的类型是在运行时动态确定的,而不是在编写代码时静态确定的。故错误。
23.正确
【详解】本题考查Python基础。
在Python 3中,使用内置函数input()接收用户输入时,不论用户输入什么格式的内容(包括数字、字符、特殊符号等),该函数一律将输入内容作为字符串(str)返回。故正确。
24.错误
【详解】本题考查Python基础。在Python中,变量(如x)实际上是对对象的引用(或指针),而不是对象本身。当你执行x = 3时,x是对整数对象3的引用。整数对象在Python中是不可变的(immutable),这意味着一旦创建,其值就不能改变。然而,当你执行x += 6时,这实际上是一个简写形式,等同于x = x + 6。在这个操作中,x + 6首先会计算出一个新的整数对象(在这个例子中是9),然后x这个变量名会被重新绑定到这个新的整数对象上,这时地址会发生变化。故错误。
25.正确
【详解】本题考查Python基础。
程序功能将字符型数字串转换成数值型输出,输出整数123。故正确。
26.错误
【详解】本题考查Python函数的应用。range(start, stop, [step]),start:计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop:计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。故使用函数range(4,9)返回的整数序列是4,5,6,7,8。题干说法错误。
27. 8 A POST score B URL地址输入错误,应该为http://192.168.169.1:80
【详解】本题考查Python程序设计相关内容。分析题目内容及程序段,推知:
(1)结构化数据是一种以特定格式组织和存储的数据,这种格式可以很容易地被计算机程序理解和处理,并且可以使用表格、电子表格或数据库来表示。非结构化数据是一种不具有特定格式或结构的数据,它的特点通常是缺乏组织,可以包括文本、图像、音频和视频文件、社交媒体帖子、电子邮件和其他数据源,非结构化数据通常由人类创建,很难使用传统的数据分析工具进行处理和分析。半结构化数据是一种具有一定结构但不完全适合结构化或非结构化数据类别的数据类型,这些数据具有一定程度的组织,但缺乏结构化数据的严格和预定义模式。数据库要存储姓名和7门选考科目成绩,需要8个字段。数据库中的数据是以二维表结构来进行逻辑表达和实现的数据,属于结构化数据。故①处答案是:8,②处答案是:A。
(2)③处,结合图a和代码"request.form.get"可知,数据是从表单中获取再存入数据库的,因此是采用POST方法,故此处答案是:POST。④处,由图b可知数据表名称为score,即将get_xm,get_wl等变量值写入到score中,故此处答案是:score。
(3)通过代码"return render_template('success.html',name=get_xm)"可知,需将get-xm变量值传入到网页name这个变量中,故⑤处答案是:B。
(4)通过代码"app.run(host='192.168.169.1',port=80)"可知服务器IP地址为192.168.169.1,端口号为80。因此浏览器访问地址为http://192.168.169.1:80,故⑥处答案是:URL地址输入错误,应该为http://192.168.169.1:80。
28.import math
num=1
while True:
if math.sqrt(num+100)-int(math.sqrt(num+100))==0 and \ #(注:“\”续行符)
math.sqrt(num+268)-int(math.sqrt(num+268))==0:
print(num)
break
num=num+1
【详解】本题考查Python程序设计相关内容。如果一个正整数a是某一个整数b的平方,那么这个正整数a叫做完全平方数。零也可称为完全平方数。对于每一个num,若其加上100后是一个完全平方数,则可以描述为math.sqrt(num+100)== int(math.sqrt(num+100));若其再加上168仍是一个完全平方数,则可以描述为math.sqrt(num+268)==int(math.sqrt(num+268));若两者均成立,则输出该数。具体如答案所示。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$