内容正文:
3.2 Python语言程序设计
一、选择题
1.在Python中,以下关于赋值语句的描述错误的是( )
A.c+=a等效于c=c+a B.“=”表示将z边表达式的值赋给左边的变量
C.语句x,y=y,X可以实现变量x和y值的互换 D.语句a,b=3表示将3同时赋值给变量a和b
2.下列Python程序段的功能是:输入两个整数,通过计算,最终输出较大整数除以较小整数的余数。
a,b=eval(input("请输入两个整数:"))
if a<b:
a,b=b,a
while a>=b:
print(a)
则程序段划线处应填入的语句为( )
A.a=a+b B.a=a-b C.b=a%b D.a=a∥b
3.下列 Python 表达式运算的结果为“True”是( )
A.not (4<=5) B.(1>2) and (5>4) C.(2!=1) or (3<2) D.7>=8
4.输入三角形的三边长分别为5,6,7,下列赋值方法中有误的是( )
A.a=5;b=6;c=7 B.[a,b,c]=[5,6,7] C.a=5,b=6,c=7 D.a,b,c=5,6,7
5.有如下 Python 程序段:
n=5;flag=True
d=[0]*5 # 将 d 列表中每个元素的值都初始化为 0
for i in range(1,n):
t=abs(a[i]-a[i-1])
d[t]=d[t]+1
for i in range(1,n):
if d[i]! =1:
flag=False
break
if flag==True:
print("ok")
运行程序后输出“ok”,则列表a中的值依次可能是( )
A.2,3,5,1,4 B.5,4,3,2,1 C.1,2,3,4,5 D.5,3,1,4,2
6.已知列表L=[2,4,6,8,10],则元素L[2]的值是( )
A.2 B.4 C.6 D.10
7.在Python中,下列能正确表示”a≤5而且a≥3”的逻辑是( )
A.a<=3 or a>=3 B.a<=5 and a>=3 C.a<=5 or a >=3 D.3<=a<=5
8.在Python语言中,执行“int(12.3)”函数后的结果是( )
A.13 B.123 C.12 D.12.3
9.有如下的Python程序段:
n = int(input())
st =″ ″
for i in range(1,n+1):
for j in range(1,i+1,2):
st +=″* ″
print(st)
该程序运行时,输入5后,输出的内容为( )
A. B. C. D.
10.列表s包含8个互不相等的元素,即 s[0],s[1],…,s[7], 有如下 Python 程序段:
for i in range( ① ):
for j in range( ② ):
if s[j]>s[j+1]:
s[j],s[j+1]=s[j+1],s[j]
该程序段实现列表s中元素升序排列,下列选项正确的是( )
A.①1,n ②0,n-i-1 B.①0,n-1 ②0,n-i
C.①1,n ②n-2,i-1,-1 D.①0,n-1 ②n-2,i-1,-1
11.下列选项中,flag的值与其他三项不同的是( )
A. B. C. D.flag=a>b>c
12.有如下Python程序段:
import random
a = [34,17,19,13,10,6,26,21]
x = (random.randint(1,4))*2
for i in range(8-x):
for j in range(7,i,-1):
if a[j]>a[j-1]:
t=a[j]; a[j]=a[j-1]; a[j-1]=t
print(a[0:4])
程序段执行后,输出的结果不可能是( )
A.[34,26,21,19] B.[34,26,21,17]
C.[34,26,17,19] D.[34,17,19,13]
13.有如下Python程序段:
#随机产生n个两位正整数存入数组a中
q=[-1]*n;top=-1
for i in range(n):
if a[i]%3==0 :
top+=1
q[top]=a[i]
elif a[i]>q[top] and a[i]%2==0:
top+=1
q[top]=a[i]
while top>-1:
print(q[top],end=',')
top-=1
执行上述程序段后,输出结果不可能是 ( )
A.48,57, B.74,80,76, C.74,68,62,33,44, D.98,45,78,88,
14.列表a=[1,2,3,"abc",'xyz'],下列说法不正确的是( )
A.len(a)的值为5
B.运行a[4]=4后,a变为[1,2,3,‘abc',4]
C.a[3]和a[-2]的值均为"abc
D.a[1:3]的结果是[1,2,3]
15.有如下Python程序段:
s="HangZhou2022"
a={0:0,1:0}
for i in s:
t=0
if not("0"<=i<="9"):
t=1
a[t]+=1
print(a[1])
该程序段运行后,输出的内容是( )
A.2 B.4 C.6 D.8
16.在Python程序设计语言当中,如果a=3,b=2,则a+3*b的运行结果是( )
A.2 B.3 C.9 D.12
二、填空题
17.在Python中, 函数可以用来实现循环的延迟执行。
18.python 程序段如下:
a=[2,1,3,4,5]
c=0
for i in range(2,len(a)):
if a[i-2]+a[i-1]==a[i]:
c=c+1
print(c)
该程序段运行后,最后输出的内容是 。
19.在横线处填入表达式完成如下Python程序,求0-100所有偶数的和。
sum=0
for i in :
sum=sum+i
print(sum)
20.写出下列Python程序运行结果。
def factorial(n):
#求n!
s=1
for i in range(2,n+1):
s=s*i
return s
total=factorial(4) #调用factorial函数
print(total)
运行结果为: 。
21.函数的定义使用的关键字为 。
三、判断题
22.已知列表x = [1, 2],执行语句y = x后,表达式id(x) == id(y)的值为True。( )
23.已知“str='a**b*c*d'”,则“str.split('*',2)”的返回结果是['a','b','c','d'] ( )
24.在python中,下面程序可以正常运行。( )
n=10
s=n+'T'
25.表达式是由常量、变量和函数通过运算符连接起来的式子。( )
26.在Python语言中,数据的输出是通过output()函数实现的。( )
四、操作题
27.操作系统在管理磁盘时,会将磁盘分为一个个“盘块”。在为文件分配空间时,可以将文件装到离散的盘块中。读取一个文件时,首先在目录结构中找到文件项。从文件项中可以获取文件名、存储时间、该文件在存储块中的起始地址等基本信息,但不包含文件具体内容,然后在磁盘文件分配表中找到对应的文件。磁盘文件分配表如表1所示,其中文件结束块用-1表示,空闲盘块用0xff(十六进制数,转化为十进制值为255)表示。
盘块号
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
下一盘块号
3
7
13
9
0xff
0xff
0xff
8
-1
-1
0xff
1
0
11
0xff
0xff
(1)根据文件的起始地址,能方便地找到文件的其它盘块。例如文件a1的起始地址是12,按表1结构,在磁盘中的盘块号依次是:12→0→3→9;则文件abc的起始地址是2,在磁盘中的盘块号依次是 (注:各盘块号用→分隔)。
(2)为了有效管理空闲块,我们可以将所有空闲盘区(每个空闲盘区可以包括若干个空闲盘块)构建到一条空闲链flst中。flst每个节点包含3个元素,依次为本空闲盘区的盘块号、长度和指向下个盘块的指针,创建时把新节点链接到flst尾部。如图a所示,共有3个空闲盘区,盘块号依次为4、5、6、10、14、15
图a
具体Python程序代码如下,请在划线处填入合适的代码。
def mgf(allot):#mgf的功能是从头到尾扫描文件分配表,创建空白盘区链
fhead=-1;flst=[]
n=len(allot);i=0
while i<n:
if allot[i]==0xff:
j=i+1
while ① :
j=j+1
flst.append([i,j-i,-1])#append的作用,在列表末尾添加元素
if fhead==-1:
fhead=②
cur=fhead
else:
flst[cur][2]=len(flst)-1
cur=flst[cur][2]
i=j+1
else:
i+=1
return fhead,flst
allot=[3,7,13,9,0xff,0xff,0xff,8,-1,-1,0xff,1,0,11,0xff,0xff]
head,flst=③
p=head
while p!=-1:#打印出所有空闲盘块号
for i in range(flst[p][1]):
print(flst[p][0]+i,end=',')
p=flst[p][2]
(3)在创建文件时,若新文件需要占据5个盘块大小,只需要在空闲链flst中找到空闲块,并依次链接,如图b所示。具体Python程序代码如下,请在划线处填入合适的代码。
图b
wd=int(input("输入新文件大小:"));p=head
while p!=-1:
if wd!=0:
for i in range(flst[p][1]):
if flst[p][0]+i !=flst[p][0]+flst[p][1]-1:
allot[flst[p][0]+i]=flst[p][0]+i+1
else:
allot[flst[p][0]+i]= ④
wd-=1
if wd==0:
allot[flst[p][0]+i]=-1
break
p=flst[p][2]
print(allot)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查Python基础。选项D,语法错误。应该a=b=3。故正确答案为:选项D。
2.B
【详解】本题考查Python基础。
本题程序的功能是实现a%b的结果,其算法是让a不断地减去b,直到a<b,此时a的值即为它们相除后的余数,因此正确答案为:选项B。
3.C
【详解】本题考查Python基础。
表达式:(2!=1) or (3<2)
2!=1 是一个比较表达式,其结果为 True(因为 2 不等于 1)。
在逻辑或(or)操作中,只要有一个操作数为 True,整个表达式的结果就是 True。
因此,(2!=1) or (3<2) 的结果为 True,因为 2!=1 是 True。
故正确答案为:选项C。
4.C
【详解】本题考查Python表达式。在Python中,a=5,b=6,c=7这种写法是错误的,不能用逗号来同时给多个变量赋值。故答案为:C。
5.A
【详解】本题考查程序分析。
变量t表示列表a中相邻元素间距,列表d用来记录列表a中相邻元素不同间距出现的次数。当n值为5时,间距1,2,3,4出现次数必须为1。故正确答案为:选项A。
6.C
【详解】本题考查列表。给定列表L=[2,4,6,8,10],要找出索引为2的元素的值。列表的索引从0开始计数,所以:L[0]对应的元素是2;L[1]对应的元素是4;L[2]对应的元素是6。因此,元素L[2]的值是6。故答案为:C。
7.B
【详解】本题考查Python运算符与表达式相关内容。and运算符用于连接两个或多个条件表达式,当且仅当所有条件表达式都为True时,整个逻辑表达式的结果才为True。 or运算符作用是判断两个条件中的至少一个是否为真,如果至少一个条件为真,则整个表达式返回True;否则,返回False。能正确表示”a≤5而且a≥3”的逻辑是:a<=5 and a>=3,故本题答案是B选项。
8.C
【详解】本题考查Python程序设计相关内容。int()函数是Python中用于转换其他数据类型为整数类型的一个重要函数。它接收一个参数,并返回一个整数。int(12.3)-->12。故本题答案是C选项。
9.C
【详解】本题考查Python程序设计相关内容。外循环i控制行数,共5行;内循环st存储'* '的个数,每次输出之后不清空,因此下次循环加上次的'* '的个数,故第一行1个'* ',第二行2个'** ',第三行4个'**** ',依次类推……。故本题答案是C选项。
10.D
【详解】本题考查Python程序设计相关内容。本题涉及到冒泡排序的应用。列表s包含8个互不相等的元素,需要7趟排序才可以使得序列有序。结合range函数特点(range(start,stop[,step])。start参数表示序列的起始值,如果不指定,默认为0;stop参数表示序列的结束值,如果不指定,默认为None;step参数表示步长,如果不指定,默认为1,这三个参数都是可选的,可以根据需要选择不同的参数组合来生成不同的数字序列),j值会因i值区间取值不同而发生变化,分别将四个选项代入程序段验证,ABC选项不能实现列表s中元素升序排列,D选项可以。故本题答案是D选项。
11.A
【详解】本题考查Python关系运算相关内容。以a=3,b=2,c=4为例,比较4个选项结果。A选项,结果为True;B选项,结果为False;C选项,结果为False;D选项,结果为False。A选项与BCD选项不同。故本题答案是A选项。
12.C
【详解】本题考查Python程序设计相关内容。本题涉及到冒泡排序相关知识。分析程序段可知:根据代码x可以生成2,4,6,8。此段代码为降序排序,从后往前,x不同排序轮次不同。当x=8时,外层循环无法执行,不能排序,数据不会变化,前四个元素不变,可能为D选项;当x=6时,排序两轮后的数据为[34,26,21,17,19,13,10,6],前四个元素[34,26,21,17],可能为B选项;当x=4时,排序4轮,前四个元素为数组四个最大值,即为[34,26,21,19],即A选项可能。当x=2时,排序6轮,完全有序了。综上不可能是C,故本题答案是C选项。
13.B
【详解】本题考查栈操作相关内容。当a[i]是3的倍数时,将a[i]的值入栈。当a[i]大于栈顶元素q[top],且a[i]是偶数时,将a[i]的值入栈。最后栈中的元素依次出栈。
A选项,数字48和57是3的倍数,入栈顺序为57、48,输出的出栈顺序为48、57,选项正确。
B选项,数字74、80、76都是偶数,若出栈顺序为74、80、76,则入栈顺序为76、80、74,其中74小于栈顶元素80,不符合入栈条件。B选项不可能。
C选项,数字33是3的倍数。数字74、68、62、44是偶数,入栈时符合a[i]大于栈顶元素q[top],入栈顺序为44、33、62、68、74,输出的出栈顺序为74、68、62、33、44,选项正确。
D选项,数字45、78是3的倍数。数字98、88是偶数,入栈时符合a[i]大于栈顶元素q[top]。入栈顺序为88、78、45、98,输出的出栈顺序为98、45、78、88,选项正确。
故本题答案是B选项。
14.D
【详解】本题考查Python列表相关内容。分析列表a,len(a)=5,A选项正确;运行a[4]=4,即:将4赋值给元素a[4],a[4]原值为'xyz',重新赋值后,a[4]值为4,列表a变为:[1,2,3,‘abc',4],B选项正确;列表元素下标排列方式有两种,由左至右:从0开始编号,每次递增1;由右至左:从-1开始编号,每次递减1。a[3]和a[-2]均为"abc",C选项正确;a[1:3](下标从1开始到3结束,但不包括3)的结果是[2,3],D选项错误。故本题答案是D选项。
15.D
【详解】本题主要考查Python程序的执行。分析程序可知,字符串s中有8个字母、4个数字,变量i依次取字符串s中的字符,若i是不数字,则执行 t=1,a[t]+=1,即用a[1]统计非数字字符的个数,故该程序段运行后,输出的内容是a[1]=8,故答案为D选项。
16.C
【详解】本题考查Python表达式的运算。a=3,b=2,则a+3*b=3+3*2=9,故选C。
17.time.sleep()
【详解】本题考查Python函数的描述。Python中,time.sleep()函数可以用来实现循环的延迟执行。
18.2
【详解】本题考查程序设计。
该程序输出,统计列表中前面两个数相加等于第三个数的个数。第一次循环1+2等于3,c+=1。第二次循环1加3等于4,c+=1;第三次循环3+4不等于5。故正确答案为:2。
19.range(0,101,2)
【详解】本题考查Python程序设计相关内容。根据题意求0-100之间的偶数和,从2开始,每次递增2,直到增加到100,故用range()函数实现:range(0,101,2)。故本题答案是:range(0,101,2)。
20.24
【详解】本题考查Python函数相关内容。该函数功能是计算阶乘(n!)。由s=s*i及range(2,n+1)可知返回值是s=1*2*3*……n,factorial(4)=1*2*3*4=24。故本题答案是:24。
21.def
【详解】本题考查Python函数的定义。使用def关键字来创建python自定义函数。
22.正确
【详解】本题考查Python基础。
在Python中,当你执行 y = x 这样的语句时,你实际上并没有创建 x 的一个新副本,而是让变量 y 指向了 x 指向的同一个对象。这意味着 x 和 y 都引用了内存中的同一个列表对象,即内存地址相等,故表达式id(x) == id(y)的值为True。故正确。
23.错误
【详解】本题考查Python基础。
调用split方法,以*号为分隔符,分隔两次,需要注意的是a后面两个*号,分隔时认为中间是空串,故结果为:['a', '', 'b*c*d']。故错误。
24.错误
【详解】本题考查Python基础。
字符型数据和整型数据无法进行加法运算,类型不兼容。故错误。
25.正确
【详解】本题考查表达式相关内容。表达式是一种由常量、变量、运算符和函数调用组成的式子,用于计算和生成值。表达式可以用于执行各种数学运算、逻辑判断和数据操作。故本题答案是:正确。
26.错误
【详解】本题考查的知识点是Python语言中的输出语句。在Python语言中,实现数据的输出是使用print函数,故答案为错误。
27. 2→13→11→1→7→8 j< n and allot[j] == 0xff len(flst)-1 mgf(allot) flst[flst[p][2]][0]
【详解】本题考查Python程序设计相关内容。
(1)根据表1结构,若文件abc的起始地址是2,在磁盘中的盘块号依次是2→13→11→1→7→8。
(2)j=i+1,即索引i处是空白盘,此时通过循环判断后面的区块是否为空白盘,循环条件是判断有没有遍历到末尾同时j处的区块是空白盘,故第一空填j< n and allot[j] == 0xff。如果fhead值为-1,则指向末尾元素,故第二空填len(flst)-1。mgf的功能是从头到尾扫描文件分配表,创建空白盘区链,此次调用该函数,并将结果赋值给head和flst,参数是allot,故第三空填mgf(allot)。
(3)如果flst[p][0]+i =flst[p][0]+flst[p][1]-1,则说明p盘区已满,则应指向下一个空闲盘区的盘块号,故填pflst[flst[p][2]][0]。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$