内容正文:
浙教版(2019)必修一3.2Python语言程序设计同步练习
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.有如下Python程序段:
import random
a=[1]*5
i=1
while i<len(a):
a[i]=a[i-1]+random. randint (0,2)*2
for j in range(i):
if a[i]==a[j]:
i=j
break
i+=1
print(a)
执行该程序后,输出的结果可能是( )
A.[1,3,9,11,15] B.[1, 3, 5, 9, 13] C.[1,5,7,10,13] D.[1, 5, 5, 9, 13]
2.下列程序代码执行后不可能的结果是( )
import random
a = [2,3,4,5,6,7]
b = [0] * 6
random. shuffle(a)
i = 0
while i < 6:
if a[i] % 3 == 0:
b[i] = a[i] * 2
elif i % 2 == 0:
b[i] = a[i] * 2 + 1
i += 1
print(b)
A.[12, 0, 9, 6, 11, 0] B.[11, 6, 5, 0, 15, 12]
C.[15, 6, 5, 0, 9, 12] D.[7, 0, 11, 6, 0, 12]
3.阅读以下程序:
def f(x):
if x > 6 or x < 1:
return "无法计算"
elif x == 6:
return 1
else:
return (f(x + 1) + 1) * 2
若调用此函数时输入的x为3,则函数返回值为( )
A.11 B.10 C.22 D.'无法计算'
4.下列代码运行后,输出的结果为( )
s = "1,6,5,3,4"
n = 0
for i in range(0, len(s), 3):
j = i
while j < len(s):
n += len(s)-j
j += 3
print(n)
A.9 B.15 C.24 D.30
5.二分查找时,要求数据是有序的,但有时我们又想保持数据的原始顺序,那可以引入一个索引数组解决这个需求。例如,已知无序数组a(下标0到n-1),通过引入索引数组b(下标0到n-1),使得a[b[0]]≤a[b[1]]≤a[b[3]]……≤a[b[n-1]](示例如图所示),再对这些有序数据进行二分查找。
通过索引数组b,实现a[b[0]]≤a[b[1]]≤a[b[3]]……≤a[b[n-1]]功能的程序段如下,方框中应填入的正确代码为
b = [i for i in range (len(a))] # 索引数组b的初始值
for i in range(1, n):
for j in range(n - 1, i -1, -1):
print (b)
A.
if a[b[j]] < a[b[j-1]]:
b[j], b[j-1] = b[j-1], b[j]
B.
if a[b[j]] < a[b[j-1]]:
a[b[j]], a[b[j-1]] = a[b[j-1]], a[b[j]]
C.
if a[j] < a[j-1]:
a[j], a[j-1] = a[j-1], a[j]
D.
if b[j] < b[j-1]:
b[j], b[j-1] = b[j-1], b[j]
A.A B.B C.C D.D
6.有如下程序段:
s = "aabbbccdd"
n = len(s); i = 3
while i < len(s):
if s[i] == s[i - 1] and s[i-2] == s[i - 3]:
s = s[:i] + s[i + 1:]
else:
i += 1
执行该程序段后,变量s的值是( )
A."abcd" B."aabbcd" C."aabcd" D."aabccd"
7.数组a[0]至a[n-1]依次存放着n个数据,现需要删除数组中第x个元素(第1个元素为a[0])。实现该功能的程序段如下,方框中应填入的正确代码为( )
for i in range(x - 1, n - 1, 1):
n = n - 1
A.a[i] = a[i + 1] B.a[i + 1] = a[i] C.a[i] = a[i - 1] D.a[i - 1] = a[i]
8.在 Python 语言中,运行以下程序段后,输出的结果是( )
L= [ 'a', 'b','c','d']
del (L [1])
print (L)
A.['b','c','d'] B.['a','b','c'] C.['a', 'b','d'] D.['a','c','d']
9.在 Python 中,执行以下语句后,显示的结果是( )
>>>a=10;b=5
>>>a-=b
>>>b+=a
>>>print(a,b)
A.5,10 B.10,5 C.5,5 D.10,10
10.在 Python 中,执行如下语句段后,输出的结果是( )
a,b,c=0,1,2
if b>c:
a=c-b
print (a)
A.1 B.2 C.0 D.3
11.在 Python 语言中,函数round(9.8)的运算结果是( )
A.'9' B.9 C.10 D.8
12.有如下Python程序段:
n=int(input())
s=" "
while n!=0:
x=n%10
s=s+str(x)
n=n//10
print(s)
若程序运行后输入“20220901”,输出的结果为( )
A.TypeError B.10902202 C.20220901 D.16
13.地图软件的驾车导航、步行导航、骑行导航等功能给我们的生活带来了极大的便利。用户在使用地图软件的驾车实时导航功能时,软件会实时获取我们的位置、车速、方向、时间等信息,将数据发送给服务器,服务器将获取到的信息进行分析处理,转换为车流量信息,判断交通的拥堵情况并返回给用户,以不同颜色来呈现拥堵情况。拥堵指数是根据车流量等数据计算而来的,具体如表n所示,用python描述不同拥堵情况tmp和呈现的颜色,下列选项正确的是( )
拥堵指数
含义
0~1.4
通畅(绿色)
1.5~1.9
缓行(黄色)
2.0~3.9
拥堵(红色)
4.0及以上
严重拥堵(深红色)
A.
if tmp>=4.0:
print("深红色")
elif tmp>=2.0:
print("红色")
elif tmp>=1.5:
print("黄色")
else:
print("绿色")
B.
if tmp>=4.0:
print("深红色")
if tmp>=2.0:
print("红色")
if tmp>=1.5:
print("黄色")
else:
print("绿色")
C.
if tmp>=0:
print("绿色")
elif tmp>=1.5:
print("黄色")
elif tmp>=2.0:
print("红色")
else:
print("深红色")
D.
if tmp>=0:
print("绿色")
if tmp>=1.5:
print("黄色")
if tmp>=2.0:
print("红色")
else:
print("深红色")
A.A B.B C.C D.D
14.下列Python表达式中,值为True的是( )
A."TZ" in "TaiZhou" B.12//3**2==16 C."3123"<"761" D.2024%100!=1243//10%100
15.有如下 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
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python程序设计相关内容。分析程序段,a[0]=1,该程序段通过随机函数产生随机数:0,1,2,由语句“a[i]=a[i-1]+random. randint (0,2)*2”知,当前项将等于前一项,或比前一项大2或4,若当前项等于前一项,则重新产生该项,即最后生成序列中不可能出现重复值,且为递增的奇数序列。A选项,a[2]=9,比a[1]大6,选项错误。B选项,为可能序列。C选项,a[3]=10,为偶数,选项错误。D选项,a[1]与a[2]相等,选项错误。故本题答案是B选项。
2.D
【详解】本题考查Python程序设计相关内容。random.shuffle()用于将一个列表中的元素打乱顺序,值得注意的是使用这个方法不会生成新的列表,只是将原列表的次序打乱。分析程序段,若a[i]为3的倍数(3、6)时,则b[i]值为 a[i] * 2,即6、12;若i为2的倍数(0、2、4)时,则b[i]值为 a[i] * 2+ 1,即b[0]、b[2]、b[4]的值必为奇数;不满足以上两种情况者, b[i] =0。分析四个选项,D选项中b[4]=0错误,故本题答案是D选项。
3.C
【详解】本题考查Python程序设计相关内容。分析程序段,该函数为递归函数,当x为3时,其运行过程为:f(3)-->(f(4)+1)*2;f(4)-->(f(5)+1)*2;f(5)-->(f(6)+1)*2;f(6)=1。所以:f(5)=4;f(4)=10;f(3)=22。故本题答案是C选项。
4.D
【详解】本题考查Python程序设计相关内容,分析程序段,其运行过程如图所示:
故本题答案是D选项。
5.A
【详解】本题考查Python程序设计相关内容。题目采用冒泡排序的方法,若要保留其原始顺序,则在a[b[j]] < a[b[j-1]]成立时,将交换b[j], b[j-1] 可以实现,即: b[j], b[j-1] = b[j-1], b[j]。故本题答案是A选项。
6.D
【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程如图所示:
故本题答案是D选项。
7.A
【详解】本题考查Python程序设计相关内容。若要删除数组中第x个元素,则应将第x+1个元素及其后面的元素依次往前移动一个位置。由于第1个元素为a[0],则第x个元素下标为x-1,代码段中,i从x-1开始,则应将其及后面元素依次前移,即执行a[i] = a[i+1]操作可以实现题目要求。故本题答案是A选项。
8.D
【详解】本题考查的是Python列表操作。列表索引号从0开始,del (L [1])表示删除索引号为0的元素。L= [ 'a', 'b','c','d'],del (L [1])将列表中'b'元素删除。最后L= [ 'a', 'c','d'],故选D。
9.A
【详解】本题考查的是Python表达式。a-=b等价于a=a-b=10-5=5,b+=a等价于b=b+a=5+5=10,print(a,b)输出a和b的值为5,10。故选A。
10.C
【详解】本题考查Python分支结构的应用。a=0,b=1,c=2,不满足if判断条件,因此输出a的值是0。故选C。
11.C
【详解】本题考查的是Python函数。round(x)方法返回浮点数x的四舍五入值。round(9.8)=10,故选C。
12.B
【详解】本题考查Python程序设计相关内容。程序段功能是将输入的数字字符串逆序输出,输入“20220901”,输出的结果为:“10902202”,故本题答案是B选项。
13.A
【详解】本题考查Python程序设计相关内容。题目采用if...elif...else结构实现功能需求,分析四个选项:A选项,可以实现题目要求;B选项,tmp>=4.0或tmp>=2.0时,均输出“黄色”,不符合题意,存在逻辑错误。C选项,若tmp>=0不成立,意味着tmp<0,后面的部分均不会执行,不符合题意。D选项,若tmp>=2.0不成立,意味着tmp<2.0,执行print("深红色"),不符合题意。故本题答案是A选项。
14.C
【详解】本题考查的是Python表达式。"TZ" in "TaiZhou"、12//3**2==16、2024%100!=1243//10%100值为False,"3123"<"761"值为True。故选C。
15.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。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$