内容正文:
第二节 程序设计语言基础知识
一、选择题
1.在Python程序语言中,range(5)生成的序列是( )
A.1,2,3,4,5 B.0,1,2,3,4 C.0,1,2,3,4,5 D.0,1,2,3
2.小申设计了一个算法,判断样本的水质类别是否符合2类及以上标准(即水质类别1-2认为符合,其他认为不符合)。小申编写的程序如图所示,以下选项填入划线处正确的是( )
A.r==1 or r==2 B.r==1 and r==2 C.r>=2 D.r<2
3.计算机能直接识别、理解执行的语言是( )
A.汇编语言 B.Python语言 C.Basic语言 D.机器语言
4.表示10以内奇数的列表是( )
A.range(10) B.range(1,10) C.range(10,2) D.range(1,10,2)
5.下列对count()、index()、find()方法描述正确的是( )
A.count()方法用于统计字符串里某个字符出现的次数
B.find()方法检测字符串中是否包含子字符串str,如果包含子字符串返回开始的索引值,否则会报一个异常
C.index()方法检测字符串中是否包含子字符串str,如果str不存在返回-1
D.以上都错误
6.有如下 Python 程序段:
a=[5,4,2,1,3,6];q=[0]*6;
head=tail=0
for i in range(len(a)):
if a[i]%2==1:
q[tail]=a[i];tail=tail+1
elif head<tail:
head+=1
print(tail-head)
执行该程序段后,输出结果为( )
A.0 B.1 C.2 D.3
7.有如下Python程序段:
a=[[0]*3 for i in range(4)]
print(a)
for i in range(len(a)):
for j in range(len(a[0])):
a[i][j]=i*len(a[0])+j+1
则程序执行后,a[2][2]的值为( )
A.5 B.6 C.8 D.9
8.有如下Python程序段:
import random
n=6;a=[0]*n;i=0
while i<n:
k=random.randint(1,10)
if k%2==0:
i=i-1
elif k%3==0:
a[n-1]=k
n=n-1
else:
a[i]=k
i=i+1
执行该程序段后,列表a中的各元素可能的是( )
A.[0,0,3,3,6,9] B.[1,1,0,3,7,9] C.[5,0,0,5,7,3] D.[0,0,5,3,3,9]
9.某商场做促销打折活动,消费金额500元以内打8.8折;大于500元(含500元)且小于1000元打8折;1000元以上(含1000元)打7折。小曲使用Python编写了下面程序,第4行下划线处应填写的代码是( )
A.if B.elif C.else D.while
10.执行以下代码后,整型变量a和b的值分别是( )
a=2
b=3
a=a*b
b=a//b
a=a//b
A.2 3 B.6 2 C.3 2 D.6 3
11.在Python中,正确调用random模块的语句是( )
A.return random B.import random C.read random D.open random
12.以下代码可实现把多个升序链表合并成一个升序链表
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(list1, list2):
if (1) or (2) :
list1, list2 = list2, list1
if (3) :
list1.next =(4)
return list1
def mergeKLists(list1):
if (5) :
return None
if len(list1) == 1:
return list1[0]
mid = len(list1) // 2
left, right = mergeKLists(list1[:mid]), mergeKLists(list1[mid:])
return mergeTwoLists(left, right)
划线处(1)(2)(3)(4)(5)应填入的正确代码有
①(list2 and list1.val > list2.val) ②(list1 and list2.val > list1.val) ③list1,list2=list2,list1
④mergeTwoLists(list1.next, list2) ⑤mergeTwoLists(list1, list2.next) ⑥not list1 ⑦not list2
⑧list1 ⑨list2
则正确代码的顺序是( )
A.⑥①⑧④⑥ B.⑦②⑥④⑥ C.⑥①⑨④⑥ D.⑦②⑨④⑥
13.python表达式519% 10 * 10+519 // 10的结果为( )
A.70 B.99 C.141 D.51
14.函数range(6,10)生成的序列中元素的个数是( )
A.3 B.4 C.5 D.6
15.在Python中,以下哪个选项能正确实现查找一个列表中是否存在某个特定元素8,并输出其索引
lst = [3,4,8,1]
target = 8
for i in ① :
if ② :
print(i)
A.①range(len(lst)) ②lst[i] == target B.①lst ②lst[i] == target
C.①lst ②i == target D.①range(len(lst)) ②i == target
16.有下面一段程序,运行该程序后s的值为( )
A.3 B.5 C.8 D.10
17.下列Python表达式的值中,与其他三项不同的是( )
A.ord("H")-ord("A") B.round(7.25) C.len("Xin 024") D.172//2**3%8
18.有如下Python程序段:
a=[3,4,7,9,12,17]
i = a[0];j =a[5];tar =20;ans =-1
while i <=j:
mid=(i + j)//2
tmp=0
for k in range(len(a)):
if a[k]>mid:
tmp += a[k] - mid
if tmp >= tar:
ans = mid;i = mid+1
else:
j = mid -1
执行该程序段后,变量ans的值为( )
A.-1 B.6 C.7 D.10
二、填空题
19.如下Python程序段
x=0
while x<50:
x=(x+2)*(x+3)
运行后,x 的值为 。
20.Python表达式125%100的运算结果是( )
21.在程序的开始位置输入语句 numpy,即可导入Numpy模块。
22.有Python程序代码如下:
n=int(input("请输入一个整数n:"))
if n < 0 :
s = 0
elif n < 16 :
s = n ** 3
else :
s = n * n ** 2
print(s)
若要测试所有分支程序代码是否正确,请列举一组合适的数据
23.input( )函数的返回值的类型是 。
三、判断题
24.在Python中用<>表示不等于。( )
25.“num”和“NUM”会被Python解释器视为相同的变量。( )
26.汇编语言是面向机器的语言,其可读性相对较好,容易被移植。( )
27.Python语言的变量名要区分英文字母的大小写。( )
28.在程序中,x=y与y=x是不一样的。( )
四、操作题
29.某次技术练习的成绩放在score.csv文件中,文件内容如图a所示,第一列为姓名,第二列是信息技术成绩,第三列是通用技术成绩。编写Python程序从该文件中读取数据,计算技术总分(信息技术+通用技术),然后选出总分最高的前十名(第十名若有同分一起输出),程序运行界面如图b所示。
图a 图b
(1)下列Python代码实现读取数据、计算总分、存入zflst列表中的功能,请在划线处填入合适的代码。
#读入数据存入列表data中,data列表形如[["陈**","50","43.5"],["甘**","50","0"],......]
zflst=[] #创建空列表
for stu in data:
zf=①
zflst.append(zf) #把zf添加到zflst列表中
(2)下列Python代码实现选出总分最高的前十名(第十名若有同分一起输出)。基本思路为:利用逐个比较求最大值的方式从zflst中挑选出总分最高的前十名,然后再遍历整个zflst查找第10名的同分。为避免重复参与选择,创建flag列表为每个分数标记,False代表未被选出;True代表已被选出。请在划线处填入合适的代码。
print("姓名 总分")
n=②
flag=[False]*n #创建一个flag列表,含有n个False元素
for i in range(10): #选出最高的10个总分
max=0
for j in range(n):
if flag[i]==False:
if ③ :
max=zflst[j]
k=j
print(data[k][0],"",zflst[k])
flag[k]=True
i=0
while i<n: #查找同分
if : #(3)改错 print(data[i][0],"",zflst[i])
flag[i]=True
i+=1
(3)改正加框处代码。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python基础。
range(start, stop[, step]) 函数用于生成一个整数序列,这个序列的起始值是start(默认为0),结束值是stop(但不包括stop本身),步长为step(默认为1)。因此,range(5)等价于range(0, 5),它会生成从0开始(包含0)到5结束(不包含5)的整数序列,即0, 1, 2, 3, 4。故正确答案为:选项B。
2.A
【详解】本题考查Python程序设计相关内容。and是且,or是或,判断样本的水质类别是否符合2类及以上标准(即水质类别1-2认为符合,其他认为不符合),因此if判断条件是r==1 or r==2,故本题答案是A选项。
3.D
【详解】本题主要考查程序设计语言。计算机能直接识别、理解执行的语言是机器语言,即二进制0和1,故本题选D选项。
4.D
【详解】本题考查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)。表示10以内奇数的列表是range(1,10,2),故本题答案是D选项。
5.A
【详解】本题考查Python函数的应用。count()方法用于统计字符串里某个字符出现的次数;find()函数可以在字符串中查找指定字符或子串的位置,如果找到则返回该字符或子串在整个字符串中的下标,否则返回-1;index()函数,如果不存在会报异常。故选A。
6.B
【详解】本题考查Python程序调试与执行。分析程序,当a[i]是奇数时,则将a[i]保存到q中,同时tail递增1,若a[i]是偶数且head<tail时,则head递增1。第一次循环,a[i]=5,则tail=1,第二次循环,a[i]=2,执行elif,head=1;第三次循环,不满足判断条件,跳过;第四次循环,a[i]=1,则tail=2;第五次循环,a[i]=3,则tail=3;第六次循环,a[i]=6,head=2,循环结束。因此输出tail-head=3-2=1。故选B。
7.D
【详解】本题考查Python程序。首先,a=[[0]*3 for i in range(4)]创建了一个4行3列的二维列表,初始值均为0。然后通过两层循环进行赋值,len(a)为4,len(a[0])为3。对于a[2][2],计算过程为2*3+2+1=9。故答案为:D。
8.D
【详解】本题考查Python程序设计相关内容。random.randint(1,10)生成1~10的随机整数。通过分析代码段,可知:当k=2、4、6、8、10时,a列表元素值不会出现2、4、6、8、10,A选项错误;当k=3、9时,列表最后元素aa[5]元素值为对应的3、9;若3、9同时出现,则两值之间不应该出现3、9之外的数值,B选项错误;当列表元素前有两个0(未被修改)出现时,其列表最后的两个元素值应该是3、9中的一个,C选项错误。故本题答案是D选项。
9.B
【详解】本题主要考查Python多分支结构。Python多分支结构格式是if…elif…else,故划线处填elif,故本题选B选项。
10.C
【详解】本题考查的是Python调试与运行。*表示乘,//表示整除。a=a*b=2*3=6,b=a//b=6//3=2,a=a//b=6//2=3。执行后整型变量a和b的值分别是:3 2,选C。
11.B
【详解】本题考查Python模块。import是用于导入模块的关键字,正确的语法是import random。故答案为:B。
12.A
【详解】本题考查链表。(1)如果第一个链表为空,则直接返回第二个链表,故选⑥。(2)如果第二个链表不为空且第一个链表的值大于第二个链表的值,则交换两个链表,使得较小的值在前。故选①。(3)在递归合并两个链表时,将当前较小值的节点作为合并结果的头节点。故选⑧。(4)递归地合并剩余的链表部分。故选④。(5)如果链表数组为空,则返回None。故选⑥。故答案为:A。
13.C
【详解】本题考查的是Python表达式。%表示求余,//表示整除,*表示乘,故519% 10 * 10+519 // 10=141。选C。
14.B
【详解】本题考查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(6,10)生成:6、7、8、9共4个。故选B。
15.A
【详解】本题考查程序分析。B选项,直接遍历列表lst,变量i直接存储的是列表元素,非索引。C选项,变量i存储的是列表元素值,非索引。D选项,if条件判断错误,不能用索引等于目标值。故正确答案为A选项。
16.B
【详解】本题主要考查Python程序的执行。当list[i]>0且i<=n时,s递增,i递增,否则退出循环。当list[5]=-9<0,退出循环。故s=0+1+1+1+1+1=5,故运行程序后s的值为5,故本题选B选项。
17.D
【详解】本题考查Python表达式。A选项,ord("H")-ord("A")=72-65=7;B选项,round(7.25)=7;C选项,len("Xin 024")=7;D选项,172//2**3%8=172//8%8=21%8=5。故答案为:D。
18.B
【详解】本题考查Python程序设计相关内容。分析代码段,初始状态下,ans =-1,tar =20,i=3,j=17。
(1)i<=j成立,第一次进入外循环:mid=(i + j)//2=10,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1、2、3时,a[k]>mid不成立,当k值为4、5时,a[k]>mid成立,两次都执行 tmp += a[k] - mid,使得tmp=9,此时,tmp >= tar不成立,执行j = mid -1,j=9。i值未发生变化,仍然=3。
(2)i<=j成立,第二次进入外循环:mid=(i + j)//2=6,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1时,a[k]>mid不成立,当k值为2、3、4、5时,a[k]>mid成立,四次都执行 tmp += a[k] - mid,使得tmp=21,此时,tmp >= tar成立,执行ans = mid;i = mid+1;ans=6,i=7,j值未发生变化,值为9。
(3)i=7,j=9,i<=j成立,第三次进入外循环:mid=(i + j)//2=8,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1、2时,a[k]>mid不成立,当k值为3、4、5时,a[k]>mid成立,三次都执行 tmp += a[k] - mid,使得tmp=14,此时,tmp >= tar不成立,执行j = mid -1,j=7,i值未发生变化,值为7。
(4)i=7,j=7,i<=j成立,第四次进入外循环:mid=(i + j)//2=7,tmp=0,k从 0到5依次执行内循环体,当 k值为0、1、2时,a[k]>mid不成立,当k值为3、4、5时,a[k]>mid成立,三次都执行 tmp += a[k] - mid,使得tmp=17,此时,tmp >= tar不成立,执行j = mid -1,j=6,i值未发生变化,值为7。(5)i=7,j=6,i<=j不成立,不再进入循环。在四次循环内,只有第二次循环,ans才获得值,其值为6。
故本题答案是 B选项。
19.72
【详解】本题考查Python基础。初始化x=0,执行循环。
第一次运行:x=(0+2)*(0+3)=6
第二次运行:x=(6+2)*(6+3)=72
故正确答案为:72。
20.25
【详解】本题考查Python运算符与表达式。在Python中,%代表求模运算,因此表达式125%100的运算结果是25。
21.import
【详解】本题考查模块。在Python中,要使用某个模块,需要使用import语句来导入。Numpy是Python中的一个重要的科学计算库,要使用它,就在程序开始位置输入import numpy来导入。故答案为:import。
22. -1,15,16 或其他等价答案
【详解】本题考查的是Python多分支语句。阅读程序可知,程序由三个分支:小于0、大于等于0小于16、大于等于16。故测试数据可以是:-1,15,16 或其他等价答案。
23.字符串型
【详解】本题考查输入函数相关知识。input()函数是输入函数,用于接受一个标准输入数据,函数返回值是“字符串”类型。故本题答案是:字符串型
24.错误
【详解】本题考查Python关系运算符相关内容。用来表示不等于的符号是“!=”,“==”表示等于,“>=”表示大于等于,“<=”表示小于等于,故本题答案是:错误。
25.错误
【详解】本题考查变量。Python中的变量严格区分大小写。num和NUM不是相同变量,故错误。
26.错误
【详解】本题考查汇编语言的描述。汇编语言是面向机器的语言,其可读性相对较好,但不容易被移植,开发难度大。故表述错误。
27.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
28.正确
【详解】本题考查程序设计中赋值语句的理解。在Python程序中,x=y是将y的值赋给x,y=x是将x的值赋给y,因此,x=y与y=x是不一样的。故正确。
29. float(stu[1])+float(stu[2]) len(zflst)或len(data) zflst[j]>max或zflst[j]>=max not flag[i] and zflst[i]==max或flag[i]==False and zflst[i]==max
【详解】本题考查Python综合应用。
(1)①data列表形如[[陈**','50','43.5'],['甘**','50','0',......],代码"for stu in data",stu是data的元素['陈**','50','43.5'],['甘**','50','0'],......计算总分则是取出stu中的第二、三两个元素转实型后相加。故答案为:float(stu[1])+float(stu[2])。
(2)②程序中出现变量n,所以2处一定是对变量n的赋值,根据题目意思n是学生个数。故答案为:len(zflst)或len(data)。③循环10次,每次都遍历所有学生,从未选出的学生中找出一个总分最高分。假设max最大,然后与所有学生总分一一比对,若zflst[j]>max或zflst[j]>=max则替换max,并记录当前最大值的下标。故答案为:zflst[j]>max或zflst[j]>=max。
(3)根据题意“第十名若有同分一起输出”,所以程序中最后一个while循环是比对与第十个max同分的学生,改错处则是从未被选择过的学生中查找同分,故答案为:not flag[i] and zflst[i]==max或flag[i]==False and zflst[i]==max。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$