内容正文:
4.1 程序设计语言的基础知识
一、选择题
1.如果x=1,y=2,z=3,则下列表达式结果为False的表达式是( )
A.(x>z) or (x<y) B.(x>y) or (x<z)
C.(x>z) and (x<y) D.not (z<y)
2.下面Python程序段运行后输出( )
a=87
b=12
print(a,"-",b,"=",a-b)
A.a-b=75 B.a-b=a-b C.87-12=75 D.75
3.在Python语言中,以下不可以用作变量名的是( )
A.2_password B.Area C.bmp1 D. _3text
4.在平面直角坐标系中,设点A(x1,y1)、点B(x2,y2) ,则AB两点之间的距离为: , 该公式正确的python表达式是( )
A.math.sqr((x1 -x2)**2+(y1-y2)**2) B.math.sqr((x1-x2)2+(y1-y2)2)
C.math.sqr[(x1-x2)2+(y1-y2)2] D.math.sqr((x1 -x2)**2+(y1-y2)**2)
5.关于Python语言的特点,以下选项描述正确的是( )
A.Python语言不支持面向对象 B.Python语言是解释型语言
C.Python语言是编译型语言 D.Python语言是非跨平台语言
6.表达式3+9>20 or 23<=3+15 and 5+7<20的值为( )
A.TRUE B.true C.false D.False
7.绘制正六边形的 Python程序代码如下,程序第5行下划线处应填入( )
1 #画正六边形
2 import turtle as t
3 for I in range(6):
4 t.forward(90)
5 __________
6 t.done()
A.backward(60) B.t.backward(60) C.left(60) D.t.left(60)
8.“水仙花数”是指一个三位正整数,其各位数字立方和等于该数本身。例如:153=13+53+33,故153是一个水仙花数。求1000以内的所有水仙花数的Python程序如下:
import math
for num in range(100,1000):
if num==pow(gw,3)+pow(sw,3)+pow(bw,3):#pow(x,y)函数返回xy的值
print(num)
上述程序段中加框处应该填入的代码段是( )
A. B.
C. D.
9.下列代码的输出结果是( )
def fact(n):
s=1
for i in range(1,n+1):
s*=i
return s
print(fact(5))
A.30 B.24 C.120 D.240
10.已知a、b 为整型变量,下列表达式的值一定为False的是( )
A.a!=b B.a>b and b>a C.a>=b or b>=a D.a==b
11.某Python程序如下:
s="xyAB#Fk";k=x="";flag=True
for i in range(len(s)):
if "a"<=s[i]<="z" and flag:
x=chr(((ord(s[i])-95))%26+97) #字符"a"的ASCII码值为97
elif "A"<=s[i]<="Z" and flag:
x=chr(((ord(s[i])-41))%26+65) #字符"A"的ASCII码值为65
flag=False
else:
x=s[i];flag=True
k=k+x
print(k)
执行该程序后,输出值为( )
A.ZAyb#dK B.yzYZ#Dm C.zaYB#Dk D.zaYZ#Dm
12.在 Python 语言中, random 模块中 random. random()函数的作用是( )
A.生成从 1—10 的随机整数
B.产生0—1之间的随机浮点数
C.返回数值 10
D.产生1—9 之间的随机浮点数
13.有如下Python程序段:
import random
q=[0]*8; head, tail=0, 4
for i in range (4):
k=random. randint (0, 10)
if k%2==0:
q[tail]=k%5
tail+=1
else:
head+=1
while head<tail:
print (q[head], end="")
head+=1
程序运行后,输出结果可能为( )
A.00002306 B.01234 C.0000 D.24
14.有如下 Python 程序段:
import random
a=[0]*6
for i in range(6):
x=int(random.random()*10)+1
if i%2==1:
a[i]=2*x+1
elif x%2==0:
a[i]=x//2
else:
a[i]=x-1
print(a)
执行该程序段后,列表 a 中的值可能是 ( )
A.3,11,4,19,2,13 B.3,11,7,9,2,3
C.9,3,1,23,4,17 D.3,3,9,0,19,8
15.某二分查找算法的 python 程序段如下, 运行该段代码后, 输出的结果不可能是( )
import random
a = [10,20,30,40,50,60,70,80]
key = random.choice(a); i,j = 0,len(a)-1 ; s = ""
while i<=j:
m = (i+j)//2
if key == a[m]:
s = s+"M"; break
elif key < a[m]:
j = m-1; s = s+"L"
else:
i = m+1; s = s+"R"
print(s)
A.LLM B.LRM C.RRRM D.RRLM
16.有如下python程序:
import random
a,i,c=[],0,0
while i<5:
b=random.randint(0,9)
if b not in a:
a.append(b)
i+=1
key=int(input("key="))
for j in range(len(a)):
if a[j]%key==0:
c+=1
else:
a[j-c]=a[j]
print(a)
运行该程序,若输入key为2,则输出的a不可能为( )
A.[3,7,5,4,5] B.[3,7,1,5,5]
C.[3,5,0,3,5] D.[9,7,4,7,3]
二、填空题
17.已知a=3,那么执行语句a+=3之后,a的值为 。
18.在python中,有程序如下,如果通过键盘输入5,则运算结果是( )。
A=int(input( ))
print(A * 5)
19.在Python中,使用 可以快速生成一个特定范围内的数列。
20.有如下Python程序:
inp=input(“May i have your name? ”).split()
family_name=
print(“It's nice to meet you ”+family_name)
运行该程序,其输入输出样例如下:
或:
请根据程序功能补全代码。
21.程序分析题:阅读程序写结果
s=0
for k in range(1,7,2):
s =s+k
print (s)
输出s的值是 。
22.程序分析题:算法设计与程序实现(每空4分,共8分)
已知a、b、c分别为三角形的三条边长,利用海伦公式求三角形面积 ,其中编程实现:输入边长a,b, c,如果能构成三角形,输出面积,否则输出“No Answer !”
def cal():
a=int(txtl.get())
b=int(txt2.get())
c=int(txt3.get())
if: :
p= (atb+c)/2
s=math. sqrt (p*(p-a)*(p-b)*(p-c))
txt4.insert (0,str(s))
else:
txt4.insert (0."No Answer!")
(1)利用海伦公式求三角形面积的算法是 (填写:解析法/查找法/穷举法/排序法)。
(2)填写出参考程序中空白处的表达式 (填写字母: A/B/C/D)。
A.a+b>c or a+c>b and b+c>a B.a+b>c or a+c>b or b+c>a
C. a+b>c and a+c>b or b+c>a D.a+b>c and a+c>b and b+c>a
三、判断题
23.“student id”是一个正确的变量名。( )
24.在Python中,元组中的元素不能被修改。( )
25.不能用for 、in、if等关键字作为变量名。( )
26.在Python3.x语言中,input()函数的返回值类型是字符串。( )
27.Python语言具有面向对象、代码规范、函数库丰富、动态数据类型等特点。( )
28.算法至少有一个有效输出,所以函数至少有一个返回值。( )
四、操作题
29.某团队目前所处的研究区域有n个蝙蝠洞(不妨假设n个蝙蝠洞排成一条直线,编号依次为1-n),且该地区共有m(分别为1-m,m<=n)种不同的蝙蝠(每个洞只有一种蝙蝠)。团队准备进行一次科学考察,集齐所有种类蝙蝠的样本。科学考察会对连续编号的几个山洞进行考察(例如2,3,4,5,6)。给定n个蝙蝠洞对应的蝙蝠种类,请你设计一个程序,帮助团队确定科学考察的起点和终点,保证在完成任务的情况下,探访蝙蝠洞尽可能少。如果有多种方案,按山洞编号输出第一种。
例如:该地区有12个山洞,共有5种蝙蝠,每个山洞的蝙蝠种类依次为:2,5,3,1,3,2,4,1,1,5,4,3。那么团队应该从第2个山洞出发,一直探访到第7个山洞,这样5种蝙蝠种类都能搜集到,且探访山洞总数最少。
(1)已知,该地区有10个山洞,共有4种蝙蝠,每个山洞的蝙蝠种类依次为:2,1,3,1,2,2,4,1,1,3,那么团队应该第 个山洞出发,一直探访到第 个山洞,这样4种蝙蝠种类都能搜集到,且探访山洞总数最少。
(2)定义如下函数csh(flag),功能是将列表flag的每个元素值初始化为0,请在划线处填入合适的代码。
def csh(flag):
for i in range(20):
#
(3)实现程序功能的部分代码如下,请在划线处填上合适的代码。
def isok(p,a, flag):
tmp = 0
global ansa, ansb #定义全局变量
for i in range(p):
if flag[a[i]] == 0:
tmp += 1
flag[a[i]] = flag[a[i]] + 1
if tmp >= m:
ansa = 1
ansb = p
return True
for i in range(p,n):
flag[a[i-p]] =
if flag[a[i-p]] == 0:
tmp -= 1
if flag[a[i]] == 0:
tmp += 1
flag[a[i]] += 1
if tmp >= m:
ansa =
ans b = i
return True
return False
n = int(input("请输入蝙蝠洞总数:"))
m = int(input("请输入蝙蝠总数:"))
a = [0]*100 #记录n 个蝙蝠洞中的蝙蝠种类
flag = [0]*20 #记录在一定长度的区间内某种蝙蝠统计次数
ansa, ansb = 0,0 #记录路线的起始编号和结束编号
#输入n个整数(范围在[1,m]之间),依次存入列表a中,代码略
p = m
while p <=n:
if :
break
p += 1
csh(flag)
print("起始编号"+str(ansa+1))
print("结束编号"+str(ansb+1))
30.小明同学设计了一种加密算法,将自己的一些私密字符串数据 (例如他在各个网站和APP注册的 用户名和密码等数据信息,这里统称为明文数据)进行了加密,他设计的加密算法有如下规则:
①将明文数据中的所有大写字母均转换为小写字母,例如 A→a, B→b …Z→z
②将明文数据中的所有数字减去 2 变成另一数字,例如 0→ 8, 1→9,2→0 …9→7
③明文数据中的其他字符均不转换
④将加密后的数据倒序输出,例如“ abc→cba”
例如明文数据“aBC+789”加密后的数据为“765+cba”,他根据以上加密规则编写了下列python 程序:
defjiami(x):
if "A"<=x<="Z":
y=
elif "0"<=x<="9":
y=str((int(x)-2)%10)
else:
y=
return y
mingwen=input("请输入明文数据:")
miwen=""
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题主要考查表达式运算。逻辑运算符AND左右两边值都为真时返回TRUE;有一个值的逻辑值为假即返回FALSE。逻辑运算符OR左右两边值有一个参数逻辑值为TRUE,即返回TRUE。逻辑运算符NOT用于对参数值求反,(x>z) and (x<y)结果为False,故本题选C选项。
2.C
【详解】本题主要考查Python程序的执行。分析程序可知,程序段运行后输出87-12=75 ,故本题选C选项。
3.A
【详解】本题考查的是Python变量名。Python程序设计语言规定变量名由字母(A~Z,a~z)、数字(0~9)、下划线组成,并且其第一个字符必须是字母或下划线,而不能是数字,如s1,k,num,pai等。选项A以数字开头,不可以用作python变量名。故本题应选A。
4.D
【详解】本题主要考查Python表达式。Python中使用math调用开方方法sqr,平方使用“**”连接,括号使用英文状态下的括号,该公式正确的python表达式是math.sqr((x1 -x2)**2+(y1-y2)**2),故本题选D选项。
5.B
【详解】本题主要考查Python语言。Python语言是解释型语言,支持面向对象和跨平台使用,故本题选B选项。
6.D
【详解】本题主要考查Python表达式的运算。3+9>20值为False,23<=3+15值为False,5+7<20值为True,因此表达式3+9>20 or 23<=3+15 and 5+7<20的值为False,故本题选D选项。
7.D
【详解】本题主要考查Python程序的turtle模块。分析程序可知,第4行表示绘制长度为90的线段,接下来应该改变方向,继续绘制,题干是绘制正六边形,故应向左偏转60度,故填代码是t.left(60),故本题选D选项。
8.B
【详解】本题主要考查Python程序的调试。加框处是取出num的十位、百位、个位,其中百位bw=num//100,十位sw=(num-bw*100)//10或sw=num//10%10,个位gw=num%10或gw=num-bw*100-sw*10,故本题选B选项。
9.C
【详解】本题考查的是自定义函数。由自定函数 fact(n)可知计算的是n的阶乘。故fact(5)=1*2*3*4*5=120,故本题应选C。
10.B
【详解】本题考查的是Python表达式。and是同真为真,a>b And b>a,这两个条件不会同时满足。故本题应选B。
11.C
【详解】本题主要考查Python程序的执行。分析程序可知,对于小写字母执行x=chr(((ord(s[i])-95))%26+97) ,即"xy"变为"za",大写字母执行x=chr(((ord(s[i])-41))%26+65) 和 flag=False,即相邻的大写字母只有第一个执行,因此"AB"变为"YB"。特殊字符跳过,即执行 x=s[i],flag=True,因此执行该程序后,输出值为zaYB#Dk ,故本题选C选项。
12.B
【详解】本题考查的是Python随机函数。在 Python 语言中, random 模块中 random. random()函数的作用是生成一个0到1的随机符点数。故本题应选B。
13.C
【详解】本题考查Python程序的执行与调试。k=random. randint (0, 10),k随机生成0~10, 由q[tail]=k%5可知,q列表中不可能出现6,排除A选项;for循环一共循环4次,若q中有1、2、3、4,说明没有执行head+=1,则B应是00001234,排除B选项;如果k是连续生成0或10两个再生成两个奇数,选项C可能;选项D有偶数2、4,则说明head+=1至多执行2次,因此输出结果一定有0,排除D选项。故选C。
14.A
【详解】本题主要考查Python程序的调试。random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0, x=int(random.random()*10)+1,则x随机生成1~10之间的整数。如果i是奇数,则 a[i]=2*x+1也是奇数,排除选项D;如果i和x是偶数,则a[i]=x//2可能是奇数也可能是偶数;如果i是偶数,x是奇数,则a[i]=x-1是偶数,选项C中a[0]=9不符合题意,选项B中a[2]=7不符合题意,均排除。故本题选A选项。
15.D
【详解】本题主要考查二分查找及Python程序实现。random.choice()方法用于返回一个列表、元组或字符串中的随机项。该二叉树如下图,分析程序可知,当遍历左子树执行,s = s+"L";当遍历右子树执行,s = s+"R";当查找到该树时,执行s = s+"M",并退出循环。由图可知,70节点没有左子树,故输出的结果不可能是RRLM,故本题选D选项。
16.D
【详解】 本题考查Python程序的执行与调试。由if b not in a,可知a保存了0-9不重复的数据。c表示偶数的个数,else表示a[j]是奇数,当前面有1个偶数c=1,a[j-1]=a[j]。当前面有2个偶数c=2,a[j-2]=a[j],即当前奇数往前移动偶数个数个位置。
A选项,[3,7,?,4,5],其中?处的5是后面的5移动上来的,那只能c=2,所以?处是个偶数即可成立,例如[3,7,2,4,5]
B选项,[3,7,1,?,5],其中?处的5是后面的5移动上未的,那只能c=1,所以?处是个偶数即可成立,例如[3,7,1,4,5]
C选项,[?,?,0,3,5],其中?处的3和5是后面的3和5移动上来的,那只能c=3,所以两个?处都是偶数即可成立,例如[2,4,0,3,5]
D选项。[9,?,4,7,3]。其中?处的7是后面7移动上来的,那么c=2,但3也会移动到数字4的位置上。故选D。
17.6
【详解】本题主要考查Python赋值语句。a+=3等价于a=a+3,已知a=3,那么执行语句a+=3之后,a的值为6。
18.25
【详解】本题主要考查Python程序的执行。A=5,输出A*5=25,故运算结果是25。
19.range()
【详解】本题考查Python函数。在Python中,range()函数可以快速生成一个特定范围内的数列。通过指定起始值、终止值和步长等参数,range()函数能够灵活地创建符合需求的数字序列。例如,range(5)会生成包含0到4的数列;故答案为:range()。
20.inp[-1]
【详解】本题考查的是Python相关知识。split() 通过指定分隔符对字符串进行切片。由输出样例可知,family_name是分割后最后的子字符串。inp[-1]读取读取inp列表中倒数第一个元素。故应填入为:inp[-1]。
21.9
【详解】Range函数用于产生循环迭代列表,括号里的可以带三个参数,第一个是列表起始值,第二个是列表终止值,第三个是步长。例如本题for循环中range(1,7,2)将产生1-6之间,步长为2的数字序列,即为[1,3,5],因此循环执行3次,累加k,即s=1+3+5=9。
22. 解析法 D
【详解】本题考查的是python程序解决问题。解析法又称为分析法,它是应用解析式去求解数学模型的方法 定义 数学中用解析式表示函数或任意数学对象的方法叫解析法。根据代码的描述,空白处应填写三角形成立的条件,即每两边之和大于第三边且是与(and)的关系,a+b>c and a+c>b and b+c>a。
23.错误
【详解】本题主要考查变量的命名。“student id”中间有空格,不是一个正确的变量名,故表述错误。
24.正确
【详解】本题考查算法与编程。Python中,元组一旦创建,不可修改,题干中说法正确。
25.正确
【详解】本题主要考查Python变量的命名。变量的命名规则有:只能以字母或下划线开头,不能包含特殊符号,不能是关键字。故表述正确。
26.正确
【详解】本题考查Python函数。input()函数用于从标准输入读取一行,并将其作为字符串返回。无论用户输入什么内容,input()函数返回的值始终是字符串类型。故说法正确。
27.正确
【详解】本题考查的是Python。Python语言具有面向对象、代码规范、函数库丰富、动态数据类型等特点。说法正确。
28.正确
【详解】本题考查的是算法特征。算法的五大特征:有穷性、确定性、能行性(可行性)、有 0 个或多个输入、有一个或多个输出。算法至少有一个有效输出,所以函数至少有一个返回值。说法正确。
29. 3 7 flag[i] = 0 flag[a[i-p]] - 1 i-p+1 isok(p,a, flag) 或 isok(p,a, flag) == True
【详解】本题考查Python综合应用。
(1)我们首先需要确定连续的山洞段内包含所有蝙蝠种类的最小长度段,并找到它的起点和终点。给定的蝙蝠种类序列为:2,1,3,1,2,2,4,1,1,3要集齐所有4种蝙蝠种类(1,2,3,4),我们可以找到最短的包含所有种类的子序列。通过分析,我们发现从第3个山洞到第7个山洞(即蝙蝠种类:3,1,2,2,4)包含了所有的蝙蝠种类,并且这是最短的子序列。因此,起始编号为3,结束编号为7。故答案为:3、7。
(2)函数csh的作用是将列表flag中的每个元素值初始化为0。flag列表的大小假设为20,因此需要对flag列表的前20个元素进行初始化。故答案为:flag[i] = 0。
(3)在函数isok中,当我们向右移动窗口时,需要减少窗口左端点的蝙蝠种类的计数。flag[a[i-p]]表示窗口左端点蝙蝠种类的计数,所以当窗口右移时,计数减1。故答案为:flag[a[i-p]] - 1。当我们发现一个有效的窗口时,需要记录这个窗口的起点和终点。ansa表示起点,ansb表示终点。起点应该是当前终点i减去窗口长度p再加1。故答案为:i-p+1。需要判断是否存在一个包含所有蝙蝠种类的有效窗口。如果存在,我们就结束循环并输出结果。isok(p,a,flag)返回True表示存在这样的窗口。故答案为:isok(p,a, flag) 或 isok(p,a, flag) == True。
30. chr(ord(x)+32) y=x
【详解】本题主要考查Python程序的综合应用。①将明文数据中的所有大写字母均转换为小写字母,小写字母的ASCII码值比大写字母大32。ord函数用于将字符转换为整数,即用于获取ASCII给定字符的值;chr函数接受一个数字(应为ASCII码)并返回字符,故此处填chr(ord(x)+32)。②明文数据中的其他字符均不转换,故此处填y=x。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$