浙教版信息技术选修1第二章2.1数组综合练习题(含答案)

资源下载
  1. 二一教育资源

浙教版信息技术选修1第二章2.1数组综合练习题(含答案)

资源简介

数组综合练习
一、基础默写
图1
1如上图1所示:用不同的记号笔在上图标识出来
index=__________________
Columns=__________________
Values=___________________
图2
2如上图2所示:用不同的记号笔在上图标识出来
index=__________________
Columns=__________________
Values=___________________
3如右图3所示:
df.values的结果是
———————————
二、地区模拟题 图3
1、有如下 Python 代码:
data='My Name is Tom!'
imax,t=0,0
for ch in data:
if ('A'<=ch<='Z') or ('a'<=ch<='z'):
t+=1
else:
if t>imax:
imax=t
t=0
print(imax)
执行上述代码后,输出的内容是
A.2 B.3 C.4 D.5
2、[202406]数组 11.有如下 Python 程序段:
for i in range(0, len(a) -1, 2):
if i> 0 and a[i] < a[i - 1]:
a[i], a[i - 1] = a[i - 1], a[i]
if a[i] < a[i + 1]:
a[i], a[i + 1] = a[i + 1], a[i]
列表 a 有 6 个元素,运行该程序段后,a 可能的值是 ( )
A.[2, 9, 8, 6, 9, 3] B.[9, 9, 8, 6, 3, 2]
C.[9, 3, 6, 2, 8, 9] D.[6, 3, 9, 2, 9, 8]
3、[Z20]10.列表a包含n个互不相等的正整数,即 a[0],a[1]...,[n-1],求其中任意两个元素之和的最大值的程序段如下:
s=0
b=a[0]
for i in range(1,n):
——————————
——————————
print(s)
划线处应选填的代码顺序是()
(1)b=max(a[i],a[i-1]) (2)b=max(b,a[i])
(3)s=max(s,a[i]+b) (4)s=max(s,a[i]+a[i-1])
A.32 B.31 C.42 D.41
(3)[202403强基联盟]10.某算法的部分流程图如第 10 题图所示,数组元素 a[0]至 a[8]依次存放 7,5,0,0,9,1,3,7,7,执行这部分流程 后,输出 c 的值为 ()
A.2 B.3 C.4 D.5
【答案】A
【解析】(技术高手联盟 IT 组 提供)
考查流程图相关知识及数组的应用由 cnt[a[i]] cnt[a[i]]+1 可知该算法实现了桶排序,将相同元素放入同一个桶中,最后统计 a 数组中,重 复出现的元素的个数。
4、[202403强基联盟]该系统设有 4 个烟雾传感器,编号存储在列表 names 中,其中 names=["s1","s2","s3","s4"]。各传感器 每隔 1 分钟分别采集 1 次烟雾浓度值并传输到服务器。现从数据库中提取某时段一小时的历史数据存 储 在 字 典 dic 中 , 其 中 dic={"s1":[480,500,…,550], "s2":[450,430,…,560], "s3":[580,500,…,450],"s4":[510,520,…,530]},dic 第一个元素表示传感器 s1 在第 1,2,…,60 分钟采集的烟雾浓度值分别为 480,500,…,550,以此类推。求 4 个传感器采集的烟雾浓度数据中的最大值和次大值。 部分 Python 程序代码如下,请在划线处填入合适的代码。
m1 = 0; m2 = 0 #最大值 m1,次大值 m2
for item in names:
________① ______
for i in range(0, len(tmp) , 2):
if tmp[i] < tmp[i+1]:
tmp[i],tmp[i+1] = tmp[i+1],tmp[i]
if tmp[i+1] > m1:
m1 = tmp[i]; m2 = tmp[i+1]
elif ___②__ :
m2 = m1; m1 = tmp[i]
elif tmp[i] > m2:
m2 = tmp[i]
5、【202405东阳】13.某红木加工厂为了防止粉尘爆炸,在木料车间搭建了粉尘监测系统。该系统示意图如第 13题图 a 所示,网络应用软件的实现架构是 B/S 架构。粉尘爆炸有三个条件:一是有火源,二是氧气浓度达到 21% ,三是粉尘浓度不能超过 20~60g/m3 。请回答下列问题:在车间不同位置安装了 10 个粉尘传感器,用于找出最易发生粉尘爆炸的位置。现编写程序,找出 10 个传感器每小时(0—23 时)粉尘浓度最大值出现的次数,并输出次数最多的传感器编号。若同一时段出现多个相同的最大值,则输出最先出现的编号。部分 Python 程序代码如下,输出界面如 13 题图 b 所示,请在划线处填入合适的代码。
sensor=["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"] #传感器的编号 dis=[[16,22, … …,8],[ 10,25, … …,25], … …,[9,14, … …,14]]
#dis 中存储 10 个传感器每小时的粉尘浓度数据,分别是 dis[0]—dis[9] 。如 dis[0]中的 [ 16,22, … … ,8],分别是传感器 s1 在第0 、1 、2… …23 时采集到的粉尘浓度值。
ds_count=[0]* 10 #存储每个传感器最大值出现的次数
for i in range(0,24):
max1=p1=0
for j in range(0, 10):
if dis[j][i]>max1:
max1=dis[j][i]
p1= ①
ds_count[p1]+= 1
print(" 10 个传感器最大值出现的次数为",ds_count)
max2=p2=0
for i in range(0, 10):
if ds_count[i]>max2:
max2=ds_count[i]
p2=i
print("次数最多的是", ② ,"粉尘传感器。")
6、【2312强基】有一个数字集合,所有数按从小到大的顺序排成规律的数列,即a1=3,a2=5,a3=6,a4=9,…,小明同学对所有数字按照左小右大、上小下大的原则写成如下的三角表形式,如第 13 题图 a 所示:
(1)小明发现图 a 中的数据很有规律,根据这一规律可以推出 a(13)= ▲ ;
(2)小明编写了一个 Python 程序,用来求该数列第 n 项数值以及前 n 项和,程序运行界面如第 13 题图 b 所示。部分程序代码如下:
num=int(input("请输入数列的项数:"))
n=num
i,sum=1,0
while n>i:
for j in range(i):
________(1)______
___________② ________
i+=1
if n!=0:
for j in range(n):
sum+=2**i+2**j
___________③ _______
print("a("+str(num)+")=",b)
print("集合前"+str(num)+"项和为:",sum)
11 月 1 日开始小明每天定时记录农作物的生长情况,为了更好的了解温度对农作物生长的影响,系统搭建好后从 10 月 20 日开始运行至 11 月 5 日,小明现需计算其中属于 11 月份的每天温度与前一天的温差,首先在数据表中加入了“diff”列来记录温度差,如第 13 题图 b 所示,分析结果如 13 题 c 所示。
第 13 题图 b 第 13 题图 c
部分 Python 程序如下:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
n = len(df)
df["diff"] = 0
# 插入新列“diff”,用于存储与前一天温差,默认值设为 0
dft =_________①________ # 将 10 月 31 日至 11 月 5 日数据存储于 dft
for i in range(12,17):
s = dft.at[i,"temp"] - dft.at[i - 1,"temp"]
______②____ #设置 11 月份每日的温差值如第 13 题图 diff 列所示
dft = dft.tail(5)
print(dft) #输出如第 13 题图 c 所示
8、14.某动车厢有特定座位 m 排,共 4×m=n 个座位,每一排从左到右分别编为 A、B、C、D。A 临左窗,B、C 临过道,D 临右窗。动车售票系统支持在线订票或退票。现编写程序,模拟在线订票退票操作,并及时统计待售的连坐座位有多少对。若某相同的座位数据被多次输入,则依次表示售出,退票,售出……以此类推。如第 14 题图 a 所示,当前图中显示的待售连坐座位是 7 对。
(1)若售退数据为 '1A', '1C', '2A', '2B', '3C', '2B', '1A',则此时售出座位有( )个
(2)实现上述功能的部分 Python 程序如下,请在划线处填入合适的代码。
n = 40;cnt = 0
tick = [0] * n #0 ~ n-1 号座位初始为待售状态,每位用 0 表示。
lst = ['5C', '2A', '7A', '6C', '6C', '4D', '7D', '4D', '10C']
j=0
while j != len(lst):
puts = lst[j]
st=""
______①______
for i in puts:
if "0" <= i <= "9":
______②______
else:
num = int(st)
sq = ord(i) - 65
#此时 i 为 puts 中读取的字母,以此计算本次操作的座位所处的列号
pos = (num - 1) * 4 + sq
tick[pos] = 1 - tick[pos]
for i in range(0,n,2):
if _____③_____:
cnt += 1
print("待售的连坐座位统计:", cnt, "对")
9.使用列表生成式创建数组代码如下:
a=[i*i for i in range(10) if i%2==0]
则数组元素 a[3]的值是 ( )
A.3 B.9 C.16 D.36
10.在一个长度为 n 的数组中删除第 i个元素(1<=i<=n)时,需向前移动的元素个数是 ()
A.i B.n-i C.n-i+1 D.n-i-1
11、有如下 Python 程序段:
a=[3,1,6,5,0,9,2,6]
i=0;n=len(a)
while iif a[i]%3==0:
a[i]=a[n-1]
n-=1
else:
i+=1
执行该程序段后,a[0]的值是 ()
A.3 B.1 C.2 D.5
12、实现上述功能的 Python 程序如下,请在划线处填入合适的代码。
#算法 1:使用变量 j逆序扫描数组,再利用 pop(j)方法直接删除重复元素
def deduplication_1(arr):
i=0
while ifor j in range( ① ):
if arr[j]==arr[i]:
arr.pop(j)
i+=1
#算法 2:使用变量 c 统计重复元素,再通过 arr[j-c]=arr[j]高效删除重复元素
def deduplication_2(arr):
i,n=0,len(arr)
while ic=0 #记录重复元素的数量
for j in range(i+1,n):
if arr[j]==arr[i]:
c+=1
else:
_______②______
n-=c #更新数组长度
i+=1
del arr[n:]
#算法 3:使用变量 r记录剩余元素右边界,再通过 arr[r]=arr[j]高效删除重复元素
def deduplication_3(arr):
i,n=0,len(arr)
while ir=i+1 #剩余数组元素的右边界
for j in range(i+1,n):
if ____③____:
arr[r]=arr[j]
r+=1
n=r #更新数组长度
i+=1
del arr[n:]
13.有如下 Python 程序段:
n=4
a=[[i*n+j+1 for i in range(n)] for j in range(n)]
for j in range(1,n,2):
for i in range(n//2):
a[i][j],a[n-i-1][j]=a[n-i-1][j],a[i][j]
执行该程序段后,a[1][1]和 a[2][2]的值分别为 ()
A.6 和 10 B.7 和 10
C.6 和 11 D.7 和 11
14.有如下 Python 程序段:
a=[[0]*4]*3
b=[[0]*4 for i in range(3)]
a[2][3]=8
b[2][3]=8
执行该程序段后,下列说法正确的是 ()
A.a[0][3]的值为 0,b[0][3]的值为 0
B.a[0][3]的值为 0,b[0][3]的值为 8
C.a[0][3]的值为 8,b[0][3]的值为 0
D.a[0][3]的值为 8,b[0][3]的值为 8数组综合练习
一、基础默写
图1
1如上图1所示:用不同的记号笔在上图标识出来
index=___[0,1,2]
Columns=___[“学号”,”性别”,”年龄”]_______________
Values=____[[“s001”,”s002”,”s003”],[ “男”,”女”,”男”],[16,17,18]]_______________
图2
2如上图2所示:用不同的记号笔在上图标识出来
index=__________________
Columns=__________________
Values=___________________
3如右图3所示:
df.values的结果是
———————————
二、地区模拟题 图3
(0)有如下 Python 代码:
data='My Name is Tom!'
imax,t=0,0
for ch in data:
if ('A'<=ch<='Z') or ('a'<=ch<='z'):
t+=1
else:
if t>imax:
imax=t
t=0
print(imax)
执行上述代码后,输出的内容是 ( C )
A.2 B.3 C.4 D.5
(1)[202406]数组 11.有如下 Python 程序段:
for i in range(0, len(a) -1, 2):
if i> 0 and a[i] < a[i - 1]:
a[i], a[i - 1] = a[i - 1], a[i]
if a[i] < a[i + 1]:
a[i], a[i + 1] = a[i + 1], a[i]
列表 a 有 6 个元素,运行该程序段后,a 可能的值是 ( D )
A.[2, 9, 8, 6, 9, 3] B.[9, 9, 8, 6, 3, 2]
C.[9, 3, 6, 2, 8, 9] D.[6, 3, 9, 2, 9, 8]
(2)[Z20]10.列表a包含n个互不相等的正整数,即 a[0],a[1]...,[n-1],求其中任意两个元素之和的最大值的程序段如下:
s=0
b=a[0]
for i in range(1,n):
——————————
——————————
print(s)
划线处应选填的代码顺序是(A)
(1)b=max(a[i],a[i-1]) (2)b=max(b,a[i])
(3)s=max(s,a[i]+b) (4)s=max(s,a[i]+a[i-1])
A.32 B.31 C.42 D.41
(3)[202403强基联盟]10.某算法的部分流程图如第 10 题图所示,数组元素 a[0]至 a[8]依次存放 7,5,0,0,9,1,3,7,7,执行这部分流程 后,输出 c 的值为 ()
A.2 B.3 C.4 D.5
【答案】A
【解析】(技术高手联盟 IT 组 提供)
考查流程图相关知识及数组的应用由 cnt[a[i]] cnt[a[i]]+1 可知该算法实现了桶排序,将相同元素放入同一个桶中,最后统计 a 数组中,重 复出现的元素的个数。
(4)[202403强基联盟]该系统设有 4 个烟雾传感器,编号存储在列表 names 中,其中 names=["s1","s2","s3","s4"]。各传感器 每隔 1 分钟分别采集 1 次烟雾浓度值并传输到服务器。现从数据库中提取某时段一小时的历史数据存 储 在 字 典 dic 中 , 其 中 dic={"s1":[480,500,…,550], "s2":[450,430,…,560], "s3":[580,500,…,450],"s4":[510,520,…,530]},dic 第一个元素表示传感器 s1 在第 1,2,…,60 分钟采集的烟雾浓度值分别为 480,500,…,550,以此类推。求 4 个传感器采集的烟雾浓度数据中的最大值和次大值。 部分 Python 程序代码如下,请在划线处填入合适的代码。
m1 = 0; m2 = 0 #最大值 m1,次大值 m2
for item in names:
________① ______
for i in range(0, len(tmp) , 2):
if tmp[i] < tmp[i+1]:
tmp[i],tmp[i+1] = tmp[i+1],tmp[i]
if tmp[i+1] > m1:
m1 = tmp[i]; m2 = tmp[i+1]
elif ___②__ :
m2 = m1; m1 = tmp[i]
elif tmp[i] > m2:
m2 = tmp[i]
(3)①tmp=dic[item] ②tmp[i]>m1
循环遍历列表 names,item 为字典的键,有后续代码可得 tmp 为温度值,需通过字典键值对实现即 tmp=dic[item];
内循环实现最大值和次大值赋值,考查分支语句的应用。首先通过比较确保相邻两数中前者为大数,后者为小数。第一种情况:若小数比最大值(m1)更大,则大数为最大值,小数为次大值;第二种情况,大数比原最大值大,则将原最大值更新为次大值,最大值为当前的大数;第三种情况,小数比原次大值更大,更新次大值
(5)【202405东阳】13.某红木加工厂为了防止粉尘爆炸,在木料车间搭建了粉尘监测系统。该系统示意图如第 13题图 a 所示,网络应用软件的实现架构是 B/S 架构。粉尘爆炸有三个条件:一是有火源,二是氧气浓度达到 21% ,三是粉尘浓度不能超过 20~60g/m3 。请回答下列问题:(3)在车间不同位置安装了 10 个粉尘传感器,用于找出最易发生粉尘爆炸的位置。现编写程序,找出 10 个传感器每小时(0—23 时)粉尘浓度最大值出现的次数,并输出次数最多的传感器编号。若同一时段出现多个相同的最大值,则输出最先出现的编号。部分 Python 程序代码如下,输出界面如 13 题图 b 所示,请在划线处填入合适的代码。
sensor=["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"] #传感器的编号 dis=[[16,22, … …,8],[ 10,25, … …,25], … …,[9,14, … …,14]]
#dis 中存储 10 个传感器每小时的粉尘浓度数据,分别是 dis[0]—dis[9] 。如 dis[0]中的 [ 16,22, … … ,8],分别是传感器 s1 在第0 、1 、2… …23 时采集到的粉尘浓度值。
ds_count=[0]* 10 #存储每个传感器最大值出现的次数
for i in range(0,24):
max1=p1=0
for j in range(0, 10):
if dis[j][i]>max1:
max1=dis[j][i]
p1= ①
ds_count[p1]+= 1
print(" 10 个传感器最大值出现的次数为",ds_count)
max2=p2=0
for i in range(0, 10):
if ds_count[i]>max2:
max2=ds_count[i]
p2=i
print("次数最多的是", ② ,"粉尘传感器。")
(3)① 根据 ds_count[p1]+=1,说明变量 p1 保存的是这个时间段最大传感器对应的下标:j;② 这里填写
的应该是变量 p2 对应的传感器名称:sensor[p2],根据本题的特点,这样写也是可以的:"s"+str(p2+1)
13.有一个数字集合,所有数按从小到大的顺序排成规律的数列,即 a1=3,a2=5,a3=6,a4=9,…,小
明同学对所有数字按照左小右大、上小下大的原则写成如下的三角表形式,如第 13 题图 a 所示:
(1)小明发现图 a 中的数据很有规律,根据这一规律可以推出 a(13)= ▲ ;
(2)小明编写了一个 Python 程序,用来求该数列第 n 项数值以及前 n 项和,程序运行界面如第 13 题图 b 所示。部分程序代码如下:
num=int(input("请输入数列的项数:"))
n=num
i,sum=1,0
while n>i:
for j in range(i):
_______① ______
___________② ________
i+=1
if n!=0:
for j in range(n):
sum+=2**i+2**j
___________③ _______
print("a("+str(num)+")=",b)
print("集合前"+str(num)+"项和为:",sum)
答案:
(1) 36
(2)
① sum+=2**i+2**j
② n-=i
③ b=2**i+2**(n-1)
①df.tail(6) 或者 df[11:17]
②dft.at[i,"diff"] = s 或 df.at[i,"diff"]=s 或 dft["diff"][i]=s 或 df["diff"][i]=s
8、(1)3
.(2)①j += 1 或 j = j + 1 或其他等价答案.
②st = st+i 或 st += i 或其他等价答案.
③tick[i] + tick[i+1] == 0 或 tick[i]==0 and tick[i+1]==0 或其他等价答案
9、D
10、B
11、C
12、(1)len(arr)-1,i,-1
(2)arr[j-c]=arr[j]
(3)arr[j]!=arr[i]
D
C

展开更多......

收起↑

资源列表