内容正文:
3.2 Python语言程序设计
一、选择题
1.在Python语言中,数据的输出是通过( )来实现的。
A.input()函数 B.print()函数 C.output()函数 D.abs()函数
2.已知a="python",则a[1]的值为( )
A."p" B."py" C."python" D."y"
3.以下选项中,不属于函数的作用的是( )
A.提高代码执行速度 B.复用代码
C.增强代码可读性 D.降低编程复杂度
4.已知x=20,y=21,以下表达式的计算结果为True的是( )
A.x>=y-1 or (x+1)!=y B.not (x<=y)
C.x<y-1 and x-1==y D.x>y-2 and x! =y-1
5.某DataFrame对象df共包含5个数据列、200个数据行,其中第2列为“单位”列,下列语句中能读取df对象中“单位”列所有数据的是( )
A.df. columns[1] B.df["单位"] C.df[单位] D.df. "单位"
6.有如下程序段:
def f(x):
for i in b:
if x==i:
return True
return False
a=[2,0,9,3,10]
b=[10,9,16,2,7]
for i in a:
if f(i):
cnt+=1
print(cnt)
程序执行后的输出结果是()
A.1 B.2 C.3 D.4
7.列表a中各元素a[0]到a[4]的值依次为9,2,5,1,3,若分别执行如下两段程序,则数据交换次数分别是( )
for i in range(1,len(a)-1):
for j in range(1,len(a)-i):
if a[j-1]>a[j]:
a[j],a[j-1]=a[j-1],a[j]
for i in range(len(a)-1,1,-1):
for j in range(len(a)-1,len(a)-i,-1):
if a[j-1]>a[j]:
a[j],a[j-1]=a[j-1],a[j]
A.1和3 B.5和5 C.5和3 D.7和7
8.运行以下Python程序段,输出结果是( )
List=["图书",67,"100","借出",78]
print(List[2])
A.67 B.图书 C.100 D.借出
9.某停车场的收费标准为“30分钟内(含)免费,3小时内(含)5元,超过3小时每增加1小时加收1元,停车不足1小时的按1小时计算。”已知停车时长为t分钟,则下列Python程序段中不能正确计算停车费m的是( )
A. B.
C. D.
10.某对分查找的 Python程序如下:
s=[9,12,25,39,43,55,61,72,88,97]
i=0;j=len(s)-1;t=0
key=int(input())
while i<=j:
m=(i+j+1)//2
if s[m]>key:
j=m-1; t=t+1
else:
i=m+1; t=t*2
print(t)
当输入不同的 key值时,运行程序后,输出的结果不可能是( )
A.5 B.4 C.3 D.2
11.有如下 Python 程序段: s = "62bd5pjlm28"
max = t = ""
for i in range(len(s)):
if "0" <= s[i] <= "9":
t = s[i] + t
else:
if t > max:
max = t
t = ""
执行该程序段后,变量 max 的值为( )
A.62 B.5 C.82 D.526
12.如图所示的车牌,经过如下Python程序处理后,“cp.txt”文件得到的效果是( )
from PIL import Image
f=open(“cp.txt”,“w”) #以写入模式打卡“cp.txt”文件
im=Image.open(“cp.jpg”)
im=im.convert(“L”)
im=im.resize((90,21)) #将图片尺寸大小修改为90*21
pix=im.load() #读取所有像素点的颜色值
for j in range(im.size[1]):
ans=“”
for i in range(im.size[0]):
if pix[i,j]>=128:
r=“*”
else:
r=“”
ans+=r
ans=ans+“\r
” #“\r
”表示回车换行
f.write(ans)
f.close()
A.
B.
C.
D.
13.脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。构成DNA的碱基共有 4 种,分别为腺嘌呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。在两条互补碱基链的对应位置上,A总是和T配对,G总是和C配对。编写Python程序实现如下功能: 随机产生一条单链上的碱基序列,输出其对应的互补链上的碱基序列。( )
import random
DNA=['A','G','T','C']
s=''
for i in range(20):
①
print(s)
match={'A':'T','T':'A','G':'C','C':'G'}
t=''
for i in range(20):
②
print('互补链:',t)
A.①s=random.choice()+s ②t= t+match[i] B.①s=s+random.choice(DNA) ②t= t + match[s[i]]
C.①s=s+random.choice() ②t= t + match[s[i]] D.①s=random.choice(DNA)+s ②t= t + match[i]
14.列表q长度为20,q[0]到q[7]的值依次为'a','b','c','a','c','d','d','e'执行如下程序段后,输出的结果为( )
head=tail=0
for i in range(8):
if q[i]==q[head] and head!=tail:
tail+=1
head=tail
else:
tail+=1
print(q[head:tail])
A.cdde B.acdde C.eddc D.e
15.有如下Python程序段:
a=['1','14','5141','91','9810']
key=input()
i=0;j=len(a)-1
while i<=j:
m=(i+j)//2
if a[m]==key:
break
elif a[m] < key:
i=m+1
else:
j=m-1
b=''
for i in range(len(a[m])):
b+=chr(ord(a[m][i])-49+97)
print(b)
已知ord(‘a’)的值为97,ord(‘1’)的值为49,若输入的key值为“1919810”,则程序运行后输出为( )
A.aadead B.114514 C.1919810 D.ad
16.有如下Python程序段:
from random import randint
s=[60,40,70,20,10,50]
m=randint(1,3)*2
for i in range(6, m,-1):
for j in range(5,i,-1):
if s[j-1]>s[j]:
t=s[j]
s[j]=s[j-1]
s[j-1]=t
print(s)
该程序段执行后,输出的结果可能是( )
A.[60,40,70,20,10,50] B.[10,60,40,70,20,50]
C.[10,20,60,40,70,50] D.[10,20,40,50,60,70]
17.有如下Python程序段:
s=input("请输入一个仅由小写英文字母组成的字符串:")
st=[""]*len(s);top=-1
t=[-1]*26
for i in range(len(s)):
id=ord(s[i])-97
if t[id]==-1:
top+=1
st[top]=s[i]
t[id]=top
else:
first=t[id]
while top>=first and top!=-1:
num=ord(st[top])-97
t[num]=-1;top-=1
print(st[:top+1])
若从键盘输入的值为"hellopython",则输出的值为( )
A.['o','n'] B.['h','e','n']
C.['h','e','l','o','p','y','t','n'] D.['h','e','o','p','y','t','h','o','n']
二、填空题
18.Python关键字elif表示 与 两个单词的缩写。
19.学校为了能在充分了解学生需求的基础上开设选修课程,需要搭建一个“选修意愿登记系统”,用于收集学生的自主选择意愿情况。为了与学校实际情况匹配,在这个系统中允许学生从暂设的六个课程门类(艺术类、运动类、文史类、语言类、科学类、设计类等)中选择3门作为选修意愿。请协助小中一起规划设计、搭建这个小型的信息系统。小申选用了Flask模块作为服务器端的服务框架。若图交互界面中“提交”按钮的请求目标为“/create”,请在服务器端主控程序中与之关联的路由函数的横线处填空。
@app.route(" "methods='GET','POST')
20.下面程序的运行结果为: ,
s=0
for i in range(1,101):
s+=i
if i == 50:
print(s)
break
21. 模块用于科学计算(随机数、数组运算等); 模块基于numpy实现,主要用于数据的处理和分析; 用于绘图库。
22.程序运行后,从键盘输入781,结果是
x=int(input("请输入一个正整数:"))
if x%2==0:
print(x,"是偶数.")
else:
print(x,"是奇数.")
三、判断题
23.在Python程序中,数据的输入与输出是通过函数来实现的( )
24.在Python语言中,表达式(2>4)and(8>9)的结果是True。( )
25.不能用for 、in、if等关键字作为变量名。( )
26.计算机程序能重复使用。( )
27.实时获得鼠标的状态并对鼠标单击做出正确的响应,只有不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。 ( )
四、操作题
28.一种细菌的繁殖速度是每天成倍增长。例如,第一天有10个,第二天就变成20个,第三天变成40个……输入繁殖天数,输出细菌总量。
n=① (input("请输入繁殖天数"))
s=10#细菌个数初值
s=10*2**(② )
print("细菌总量为:",③ )
29.某解压算法描述如下:数据用数字段和字母段组成,数字段的数值代表字母段的重复次数。例如:字符串3R2GA10B,用该解压算法解压后为RRRGAGABBBBBBBBBB表示。python程序如下:
s=input("输入一个字符串:")
while not("0" <=s[0]<="9") or "0" <=s[len(s)-1]<="9":
print("输入数据错误,请重新输入")
s=input("输入一个字符串:")
m=0;n="";ss=""
for i in range( ):
if "0" <=s[i]<="9":
else:
n=n+s[i]
if i <=len(s)-2 and if "0" <=s[i+1]<="9":
m=0
n=""
ss=ss+m*n #④
print(ss)
(1)在程序划线处填入合适的代码。
(2)若删除④处语句,输入字符串 3R2GA10B,输出的内容是
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题主要考查Python常见函数。input( )是数据输入函数,print( )是输出函数,abs( )是求绝对值函数,故本题选B选项。
2.D
【详解】本题主要考查Python字符串操作。Python字符串的索引从0开始,a="python",则a[1]的值为"y",故本题选D选项。
3.A
【详解】本题考查Python函数相关内容。Python函数可以实现代码的复用,使代码的逻辑结构更清晰,增强代码的可读性,降低代码的维护难度。BCD选项属于函数作用,A选项不属于。故本题答案是A选项。
4.A
【详解】本题考查Python运算符与表达式相关内容。已知x=20,y=21,x>=y-1成立、 (x+1)!=y不成立,or表示只有一个表达式成立则结果为真,选项A结果为True;not (x<=y)表示不是20小于等于21,选项B结果为False;and表示左右两边的表达式都成立结果才为真,x<y-1不成立,选项C结果为False; x! =y-1不成立,选项D结果为False。故选:A。
5.B
【详解】本题考查Python基础知识。在Python中,要读取DataFrame对象中特定列的数据,可以使用列名作为键来访问,即df["单位"]。故答案为:B。
6.C
【详解】本题考查Python程序设计相关内容。分析代码段可知,该代码段功能是比较两个列表a、b,统计相同元素的个数。a=[2,0,9,3,10]、b=[10,9,16,2,7],比较两者,可得出相同元素个数为:3。故本题答案是C选项。
7.C
【详解】本题考查Python程序设计相关内容。分析两个程序段,可知:
第一个程序段交换过程:第一次数据交换是将2与9交换,所得序列是:2,9,5,1,3;第二次数据交换是将5与9交换,所得序列是:2,5,9,1,3;第三次数据交换是将1与9交换,所得序列是:2,5,1,9,3;第四次数据交换是将1与5交换,所得序列是:2,1,5,9,3;第五次数据交换是将1与2交换,所得序列是:1,2,5,9,3。
第二个程序段交换过程:第一次数据交换是将1与5交换,所得序列是:9,2,1,5,3;第二次数据交换是将1与2交换,所得序列是:9,1,2,5,3;第三次数据交换是将5与3交换,所得序列是:9,1,2,3,5。
故本题答案是C选项。
8.C
【详解】本题考查Python程序。该程序段创建了一个包含字符串和整数的列表,并使用print(List[2])语句输出列表中索引为2的元素。列表索引从0开始,因此List[2]表示获取列表中第3个元素。所以输出结果是:100。故答案为:C。
9.D
【详解】本题主要考查Python分支结构的应用。选项D中,满足第一个if判断条件时,也满足第二个if判断条件,因此m值都是5,因此不能正确计算停车费m,故本题选D选项。
10.A
【详解】本题考查对分查找相关内容。结合对分查找算法思想和程序段,构造二叉树,如图所示:。依据while循环,查找成功时:查找25、12、43、61时,t的值为4;查找9、39、43时,t的值为6;查找55时,t的值为3;查找88时,t的值为0;查找72时,t的值为2。查找失败时,t的取值范围是{0,2,3,4,6}。即无论查找成功与否,t的值都不可能是5。故本题答案是A选项。
11.B
【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程如图所示:,执行该程序段后,变量 max 的值为5。故本题答案是B选项。
12.B
【详解】本题主要考查Python数据处理。分析程序可知,当像素点的颜色值pix[i,j]>=128时,填充“*”,反之无填充,图中灰色部分的像素点的颜色值均大于128,因此得到的效果图是 ,故本题选B选项。
13.B
【详解】本题主要考查Python程序调试。①此处是通过for循环随机从列表DNA中生成20个字符,使用choice方法,choice方法可以接收一个列表,返回列表中一个元素,故第一空填s=s+random.choice(DNA),match是一个字典,可以通过匹配键来返回键值,故第二空填t= t + match[s[i]],故本题选B选项。
14.A
【详解】本题考查Python程序。首先,定义了列表q和两个变量head和tail,然后通过for循环遍历列表q。在循环中,通过条件判断判断当前元素q[i]是否等于队列头部元素q[head],并且队列头尾不相等。如果满足条件,说明找到了一个重复元素的起始位置,更新队尾tail并将队头head移动到队尾tail的位置。如果不满足条件,说明继续查找。 最终,输出列表q中从队头head到队尾tail的元素。 根据程序的执行过程: 初始时,q[0]为'a',head和tail都为0。 在第二次循环时,q[1]为'b',与队头元素不相等,继续。 在第三次循环时,q[2]为'c',与队头元素不相等,继续。 在第四次循环时,q[3]为'a',与队头元素相等,且队头队尾不相等,更新tail为4,head为4。 在第五次循环时,q[4]为'c',与队头元素不相等,继续。 在第六次循环时,q[5]为'd',与队头元素不相等,继续。 在第七次循环时,q[6]为'd',与队头元素不相等,继续。 在第八次循环时,q[7]为'e',与队头元素不相等,继续。 最终,输出q[head:tail],即q[4:8],结果为['c', 'd', 'd', 'e']。故答案为:A。
15.D
【详解】本题主要考查Python程序的执行与调试。若输入的key值为“1919810”,i=0,j=len(a)-1=4,第一次循环,m=(i+j)//2=2,a[2]>key,j=m-1=1;第二次循环,m=(i+j)//2=0,a[0]<key,i=m+1=1;第三次循环,m=(i+j)//2=1,a[1]<key,i=m+1=2,循环结束。a[m]="14"。len(a[m])=2,for循环中,当i=0时,b=b+chr(ord(a[m][i])-49+97)="a",当i=1时,b=b+chr(ord(a[m][i])-49+97)="ad",因此程序运行后输出结果是ad,故本题选D选项。
16.A
【详解】本题主要考查Python程序的执行与调试。m=randint(1,3)*2,m随机生成2、4、6,当m=2时,a[3]~a[5]成升序状态,s=[60,40,70,10,20,50];当m=4时,a[4]~a[5]成升序状态,s=[60,40,70,20,10,50];当m=6时,s不变,故输出的结果可能是[60,40,70,20,10,50],故本题选A选项。
17.A
【详解】本题考查Python程序设计相关内容。分析程序可知,该程序功能是:若栈空,将当前元素入栈,列表t对应位置数值加1(计数),若top>=first and top!=-1,则将栈中元素全部出栈,列表t对应位置重置为-1。输入的值为"hellopython",“hel”均入栈,读取到第二个“l”时,将栈中元素全部出栈;“opyth”均入栈,读取到第二个“o”时,将栈中元素全部出栈;最终,st中仅存“on”。输出的值为“on”。故此处答案是A选项。
18. else if
【详解】本题主要考查Python分支结构。Python关键字elif表示else与if两个单词的缩写。
19./create
【详解】本题主要考查Python程序Flask框架的应用。若图交互界面中“提交”按钮的请求目标为“/create”,则服务器端主控程序中@app.route("/create" methods='GET','POST')路由括号中的“/create”即与该“提交”关联,客户端即可得到指定的“响应”。
20.1275
【详解】本题主要考查Python程序的执行。变量i的范围是1~100,每次循环执行s=s+i,当i==50时,输出s的值并退出循环,此时s=s+i=0+1+2+3+...+50=1275。
21. numpy pandas matpoltlib
【详解】本题考查的是Python库相关知识。numpy模块用于科学计算(随机数、数组运算等);pandas模块基于numpy实现,主要用于数据的处理和分析;matpoltlib用于绘图库。
22.781是奇数
【详解】本题考查的是Python选择结构。从键盘输入781,即x=781, x%2=1,故执行 print(x,"是奇数."),输出:781是奇数。
23.正确
【详解】本题主要考查Python输入输出函数的描述。在Python程序中,数据的输入与输出是通过函数来实现的,表述正确。
24.错误
【详解】本题考查Python表达式的运算。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。因此表达式(2>4)and(8>9)的结果是False。故表述错误。
25.正确
【详解】本题主要考查Python变量的命名。变量的命名规则有:只能以字母或下划线开头,不能包含特殊符号,不能是关键字。故表述正确。
26.正确
【详解】本题考查计算机程序相关内容。计算机软件(程序)复用指的是在开发软件时,重复利用已有的代码和模块,以提高开发效率,并减少开发成本。故本题答案是:正确。
27.对
【详解】本题考查的是鼠标响应。实时获得鼠标的状态并对鼠标单击做出正确的响应,也就不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。题干中的说法是正确的。
28. int n-1 s
【详解】本题考查Python综合应用。
(1)输入繁殖天数,可以通过 int(input("请输入繁殖天数:")) 获取用户输入的天数,并将其转换为整数。故答案为:int。
(2)细菌个数初值为10,表示第一天的细菌数量。细菌的繁殖速度是每天成倍增长,即乘以2的指数次方。因此,细菌数量可以通过公式 s = 10 * 2**(n-1) 计算,其中 n 为繁殖天数。故答案为:n-1。
(3)输出细菌总量,使用 print("细菌总量为:", s)。故答案为:s。
29. len(s) m=m*10+int(s[j]) ss=ss+m*n RRRGAGA
【详解】本题考查Python程序的综合应用。
①依次遍历字符串s中的每一个字符,即字符串下标范围0~len(s)-1,故此处填len(s)。
②用变量m取出连续的数字,故此处填m=m*10+int(s[j])。
③数据用数字段和字母段组成,数字段的数值代表字母段的重复次数。此处还原字符串,用变量ss保存,m是数字段的数值,n是字母段,故此处填ss=ss+m*n。
④若删除④处语句,输入字符串 3R2GA10B,则最后的10B将不能进行还原,因此输出的内容为RRRGAGA。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$