内容正文:
第二节 程序设计语言基础知识
一、选择题
1.以下选项不属于程序设计语言类别的是( )
A.机器语言 B.汇编语言 C.高级语言 D.解释语言
2.在Python语言中对常量或变量进行运算或处理的符号称为运算符,“>”的运算符类别是( )
A.算数运算符 B.逻辑运算符 C.关系运算符 D.赋值运算符
3.某店铺优惠活动:消费满688后打7折,不满额则9折。计算优惠价格的Python程序段如下:
if x>=688:
y=x*0.7
else:
y=x*0.9
下列选项中与上述功能相同的是( )
A. B. C. D.
4.数学表达式在python中的正确写法( )
A.(Abs(2*a)+b)/(4ab) B.((2*a)**0.5+b)/4*a*b
C.(Abs(2a)+b)/(4ab) D.((2*a)**0.5+b)/(4*a*b)
5.若x是一个整型变量,则判断它是否为5的倍数的Python关系表达式是( )
A.x % 5 == 0 B.x / 5 == 0 C.x \ 5 = =0 D.Int(x / 5) == 0
6.下列代码的输出结果是( )
>>> a = b = c = 2024
>>> print(a,b,c)
A.a,b,c B.2024 2024 2024 C.0 0 2024 D.出错
7.某二分查找算法的Python程序如下:
import random
key=random.randint(0,4)*2+5
n=10;ans=0
a=[4,5,5,8,9,11,11,13,15,17]
i=0;j=n-1
while i<=j:
m=(i+j)//2
if a[m]<=key:
i=m+1
else:
j=m-1
ans+=a[m]
print(ans)
程序运行后,输出ans的值不可能是( )
A.19 B.27 C.37 D.44
8.关于Python语言的浮点数类型,以下选项中描述错误的是( )
A.Python语言要求所有浮点数必须带有小数部分 B.浮点数类型与数学中实数的概念一致
C.小数部分不可以为0 D.浮点数类型表示带有小数的类型
9.定义如下函数:
def fn(n,numl,num2):
if n==1:
return numl
return fn(n-1,num2,numl+num2)
下列说法正确的是( )
A.该算法的时间复杂度是O(n)
B.fn(10,1,2)的效果等价于1+2+3…+10
C.fn(5,1,1)的结果是 22
D.fn(1,1,1)与fn(1,1,2)的返回结果不同
10.我国古代著名的数学专著《孙子算经》中有这样一道题:“今有物,不知其数。三三数之,剩二;五五数之,剩三;七七数之,剩二。问:物几何?
请完善以下Python程序,实现:输出1000以内符合上述条件的所有整数及其个数。
①
for i in range(1001):
if i%3==2 ② i%5==3 ③ i%7==2:
s+=1
print(④ )
print("1000以内满足条件的数共有%d个"%s)
要实现题目要求,下列填入的代码完全正确的选项是( )
A.①s=0 ②and ③or ④s B.①s=1 ②or ③and ④i
C.①s=0 ②and ③and ④i D.①s=1000 ②and ③or ④s
11.输入一个四位正整数, 判断该四位正整数每一位上的数字是否有重复。实现上述功能的Python 程序段如下:
n = int(input("请输入一个四位正整数:"))
f = [0] *
while n > 0:
y = n % 10
n = n // 10
if sum(f) == 4:
print("没有重复的数字。")
else:
print("有重复的数字。") 方框中的(1)和(2)可选的代码有:①10;②4;③f[y]+=1;④f[y]=1下列选项中,代码顺序正确的是( )
A.①③ B.②③ C.②④ D.①④
12.某算法的流程图如图所示,若输入的n值为10987654321,则下列说法正确的是( )
A.该算法中包含两个循环结构 B.执行该流程后,输出的s值为30
C.语句“n>0?”与“r%2=0?”执行的次数相同 D.执行该流程后,变量r的值为1
13.有如下Python程序段:
s=input("请输入待处理字符串:")
st=""
for i in range(len(s)):
ch=s[i]
if"0"<=ch<="9":
ch=str((int(ch)+3)%10)
st=st+ch
else:
if"A"<=ch<="Z":
ch=ch.lower()
st=st+ch
print(st)
执行程序后,输入字符串"Happy2024!",输出的结果( )
A.7535happy! B.4202Happy! C.!7535yppah D.happy5357!
14.某二分查找Python程序代码如下
#b列表存入n个非递减整数
key = int(input())
i, j =0, n-1
while i<=j:
m=(i+j)//2
if key >= b[m]:
i=m+1
else:
j=m – 1
print(b[m],end=',')
某次运行,当输入key为“20”时,输出为“20,30,20,”,则下列说法不正确的是( )
A.根据输出结果,可以得出该二分查找的判定树为三层或四层
B.根据输出结果,待找数据中“20”的个数最多为6个
C.根据输出结果,可以判定该批待找数据最少个数为6个
D.输出结果中的前后两个“20”,分别代表待找数据中最左端和最右端的两个"20"
15.有如下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']
二、填空题
16.有如下Python 程序段:
s=0
for k in range(7,2,-2):
if k<=3:
x=3
if k<=5:
x=5
if k<=7:
x=7
s=s+x
print(s)
执行该程序段后,输出显示的内容是 。
17.在Python中,使用 循环可以遍历字典的键值对。
18.用Python表达式补充完成如下程序,统计四位奇数中满足能被23和19整除的总数。
s=0
for i in range(1001,10000,2):
:
s=s+1
print(s)
19.input( )函数的返回值的类型是 。
三、判断题
20.当作为条件表达式时,空值、空字符串、空列表、空元组、空字典、空集合以及任意形式的数字0都等价于False。( )
21.程序设计语言是指人们编制程序所使用的计算机语言,VB是低级语言。( )
22.计算机程序能重复使用。( )
23.在程序中,x=y与y=x是不一样的。( )
四、操作题
24.随机生成一个长度为n的字符串,该字符串仅由大写字母"A""B""C"组成。如果字符串中存在连续三个或更多的相同字符,则将其简化。例如,字符串"ACCBBBBCBC",根据简化规则可以进行以下步骤消除:
第一步:消除字符"B",得到新字符串"ACCCBC";
第二步:消除字符"C",得到新字符串"ABC";最终操作结束后的字符串为"ABC"。
实现上述功能的python程序如下,请回答下列问题:
(1)如有字符串“ABBBAACCB”,则消除后,字符串为: 。
(2)请在程序划线处①②③④填入合适的代码,实现程序功能。
import random
def left(s, x):
while x-1>=0 and s[x]==s[x-1]:
x=x-1
return x
def right(s, x):
while x+1<=len(s)-1 and s[x]==s[x+1]:
①
return x
def strs(n): #随机生成一个只含有A、B、C的字符串,长度为n
s=” ”
for i in range(n):
m= ②
s=s+chr(ord(“A”)+m)
return s
主程序:
K=int(input("请输入字符串的长度:"))
s=③
i=0
while i<len(s):
L=left(s, i)
R=right(s, i)
if ④ :
s=s[:L]+s[R+1:]
i=L
else:
i=i+1
print("最后的字符串为: ", s)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题主要考查程序设计语言。解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。解释语言不属于程序设计语言类别,故本题选D选项。
2.C
【详解】本题考查Python基础。
在Python语言中,“>”的运算符类别是关系运算符。关系运算符用于比较两个操作数的大小或关系,并返回一个布尔值(True 或 False)。故正确答案为:选项C。
3.D
【详解】本题考查Python选择程序设计相关内容。对比4个选项,A选项,当x>=688时,执行两次对y的赋值操作,打9折,不能体现<688时的折扣,错误;B选项,y初值是打7折,当x>=688时打9折,不符合题意,错误;C选项,else后为空语句,无论x>=688是否成立,最终要执行y=x*0.9,即全部打9折,不符合题意,错误;D选项,两个if语句可以实现题目要求,正确。故本题答案是D选项。
4.D
【详解】本题考查Python表达式。在Python中,对于开平方,应该使用**0.5来表示,而分母作为一个整体,在表示时,应该加上括号作为一个整体,因此该数学表达式在Python中表示为:((2*a)**0.5+b)/(4*a*b)。故答案为:D。
5.A
【详解】本题考查的是Python表达式。判断它是否为5的倍数,即x是否能被5整除,即x除以5的余数为0,%是取余运算符,故判断变量x是否能被5整除的Python语言表达式为:x%5==0。故选A。
6.B
【详解】本题考查的是Python赋值语句。 a = b = c = 2024表示abc同时赋值为2024,print是输出函数。故本题应选B。
7.A
【详解】本题考查Python程序设计相关内容。本题涉及到对分查找相关知识。根据题意可知key的取值范围是5~13之间的奇数。相应的二叉树如下图所示:
key为5和7时,ans=27;key为9时,ans=33;key为11时,ans=44;key为13时,ans=37,A选项,19不可能。故本题答案是A选项。
8.C
【详解】本题考查浮点数。Python中的浮点数小数部分可以为0,如1.0。故选项C错误。其它选项正确。故正确答案为选项C。
9.A
【详解】本题考查Python函数相关内容。A选项,该函数为递归函数,分析其执行过程,可知,时间复杂度为O(n),选项正确。B选项,该函数功能为计算斐波那契数列,不是计算1--10的和,选项错误。C选项,当n等于5时,计算的是斐波那契数列第5项(1、1、2、3、5...),其结果为5,不是22,选项错误。D选项,fn(1,1,1)与fn(1,1,2)运行结果相同,因第一个参数都是1,代入函数运行,均返回num1,即1。故本题答案是A选项。
10.C
【详解】本题考查Python程序。题目要求找出1000以内符合特定条件的所有整数,并计算其个数。根据题意,整数需要满足三个条件:对3取余为2,对5取余为3,对7取余为2,这三个条件需要同时满足,因此需要用and逻辑运算符。初始化计数变量应为0,并在满足条件时输出该整数。因此,填入的代码应该是:①s=0;②and;③and;④i。故答案为:C。
11.D
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,可知:f为一个长度为10的列表,按照索引号分别对应十进制数0--9(四位正整数的最高位取值1--9,其余三位取值均为0--9),(1)处应填写:10。while循环作用是将四位正整数的每一位取出来,并将其值与索引号对应的f列表元素f[y]值置为1,(2)应填写:f[y]=1。故本题答案为D选项。
12.D
【详解】本题考查的是流程图识读。该算法中包含一个循环结构;该算法的功能是将输入的n值中,数位上为偶数累加到s中,n值为10987654321,s=2+4+6+8+0=20;语句“n>0?”比“r%2=0?”执行多执行1次;r表示是n值中个位、十位……的数字,故执行该流程后,变量r的值为1。本题应选D。
13.D
【详解】本题考查Python程序分析能力。if语句判断循环遍历的字符串,如果是数字0到9,则数字加3并取余数。如果是大写字母,则转换成小写字母。其它字符不变。以上处理结果逆序存放在st中,最后输出st。故选项D为正确答案。
14.D
【详解】本题考查Python程序设计相关内容。本题涉及到二分查找相关知识。根据输出:“20,30,20”,最后一个20是最右端的20,没问题。第一个20是整个列表的中点,没法保证左侧没有20,D选项错误。依据本题的中点表达式m=(i+j)//2,中点左侧数据量<=中点右侧数据量,根据第二、第三次的输出30,20,可以确定第二次查找的区间,数据应该是3-4个,那么列表中数据元素最多9个。右侧还有一个20,中点是20,如果左侧4个全是20,所以最多6个20,B选项正确。根据上面分析,不难得出最少元素是6个:左2中1右3,C选项正确。元素最少6个最多9个,如果画出二分判定树,高度是3-4,A选项正确。故本题答案为D选项。
15.A
【详解】本题考查Python程序设计相关内容。分析程序可知,该程序功能是:若栈空,将当前元素入栈,列表t对应位置数值加1(计数),若top>=first and top!=-1,则将栈中元素全部出栈,列表t对应位置重置为-1。输入的值为"hellopython",“hel”均入栈,读取到第二个“l”时,将栈中元素全部出栈;“opyth”均入栈,读取到第二个“o”时,将栈中元素全部出栈;最终,st中仅存“on”。输出的值为“on”。故此处答案是A选项。
16.21
【详解】本题考查程序分析。
程序循环遍历数字7、5、3赋值给循环变量k,if语句判断区间中,不管k是3或是5,都执行k=7的判断,故每次累加7到变量s。故s=7+7+7=21。故正确答案为:21。
17.dict.items()
【详解】本题考查Python循环的描述。在Python中,可以使用for循环结合字典的items()方法来遍历字典的键值对。items()方法返回一个包含字典键值对的视图对象。
18.if i %23==0 and i %19 ==0
【详解】本题考查的是Python循环与选择语句。通过循环变量i遍历所有四位数的奇数,判断能否被23和19整除,只要看除完后的余数是否为0,故画线处代码为:if i %23 == 0 and i %19== 0。
19.字符串型
【详解】本题考查输入函数相关知识。input()函数是输入函数,用于接受一个标准输入数据,函数返回值是“字符串”类型。故本题答案是:字符串型
20.正确
【详解】本题考查Python基础。
空值 (None):这是Python中的一个特殊类型,用于表示“无”或“空”的概念。在布尔上下文中,它被视为False。
空字符串 ('' 或 ""):无论是单引号还是双引号定义的空字符串,在布尔上下文中都被视为False。
空列表 ([]):一个不包含任何元素的列表,在布尔上下文中被视为False。
空元组 (()):一个不包含任何元素的元组,在布尔上下文中也被视为False。
空字典 ({}):一个不包含任何键值对的字典,在布尔上下文中被视为False。
空集合 (set()):一个不包含任何元素的集合,在布尔上下文中被视为False。
任意形式的数字0,在Python中,整数0、浮点数0.0等,在布尔上下文中都被视为False。
故正确。
21.错误
【详解】本题考查的是程序设计语言。程序设计语言是指人们编制程序所使用的计算机语言,VB是高级语言。题干中说法错误。
22.正确
【详解】本题考查计算机程序相关内容。计算机软件(程序)复用指的是在开发软件时,重复利用已有的代码和模块,以提高开发效率,并减少开发成本。故本题答案是:正确。
23.正确
【详解】本题考查程序设计中赋值语句的理解。在Python程序中,x=y是将y的值赋给x,y=x是将x的值赋给y,因此,x=y与y=x是不一样的。故正确。
24. CCB x=x+1 random.randint(0,2) strs(k) R-L+1>=3或R-L>=2或len(s[L:R+1])>=3
【详解】本题考查Python综合应用。
(1)在输入的字符串"ABBBAACCB"中,有连续三个或更多相同的字符。按照消除连续相同字符的规则,我们需要逐步消除这些相同字符。首先,我们从左到右遍历字符串,发现第一个连续三个相同字符的子串为"BBB"。根据规则,我们删除中间的"B"字符,得到新字符串"AAACCB"。现在,我们继续遍历新字符串,发现连续三个相同字符的子串为"AAA"。我们删除这三个"A"字符,得到最终消除后的字符串"CCB"。故答案为:CCB。
(2)在right(s, x)函数中,我们要找到字符s[x]向右的第一个不等于s[x]的位置。因此,当x对应的字符等于下一个字符时,我们需要将x自增,直到找到第一个不相等的字符位置。故答案为:x=x+1。在strs(n)函数中,我们需要生成一个随机整数,表示字符“ABC”中的其中一个。random.randint(0,2)可以生成一个0到2之间的随机整数,然后我们将其转换为相应的字符“A”、“B”或“C”。故答案为:random.randint(0,2)。在主程序中,我们需要调用strs()函数来生成指定长度的随机字符串,而用户通过输入的方式指定了字符串的长度K。故答案为:strs(k)。在判断删除条件时,我们需要确保至少有三个连续的相同字符,才执行删除操作。因此,我们应该判断R - L + 1 >= 3,即右边界减去左边界的值加1是否大于等于3。如果大于等于3,则说明有三个或更多连续相同字符,需要进行删除。故答案为:R-L+1>=3或R-L>=2或len(s[L:R+1])>=3。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$