资源简介 数组综合练习一、基础默写图11如上图1所示:用不同的记号笔在上图标识出来index=__________________Columns=__________________Values=___________________图22如上图2所示:用不同的记号笔在上图标识出来index=__________________Columns=__________________Values=___________________3如右图3所示:df.values的结果是———————————二、地区模拟题 图31、有如下 Python 代码:data='My Name is Tom!'imax,t=0,0for ch in data:if ('A'<=ch<='Z') or ('a'<=ch<='z'):t+=1else:if t>imax:imax=tt=0print(imax)执行上述代码后,输出的内容是A.2 B.3 C.4 D.52、[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=0b=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,次大值 m2for 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=0for j in range(0, 10):if dis[j][i]>max1:max1=dis[j][i]p1= ①ds_count[p1]+= 1print(" 10 个传感器最大值出现的次数为",ds_count)max2=p2=0for i in range(0, 10):if ds_count[i]>max2:max2=ds_count[i]p2=iprint("次数最多的是", ② ,"粉尘传感器。")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=numi,sum=1,0while n>i:for j in range(i):________(1)_________________② ________i+=1if 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 pdimport matplotlib.pyplot as pltdf = pd.read_csv("data.csv")n = len(df)df["diff"] = 0# 插入新列“diff”,用于存储与前一天温差,默认值设为 0dft =_________①________ # 将 10 月 31 日至 11 月 5 日数据存储于 dftfor 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 = 0tick = [0] * n #0 ~ n-1 号座位初始为待售状态,每位用 0 表示。lst = ['5C', '2A', '7A', '6C', '6C', '4D', '7D', '4D', '10C']j=0while 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 + sqtick[pos] = 1 - tick[pos]for i in range(0,n,2):if _____③_____:cnt += 1print("待售的连坐座位统计:", cnt, "对")9.使用列表生成式创建数组代码如下:a=[i*i for i in range(10) if i%2==0]则数组元素 a[3]的值是 ( )A.3 B.9 C.16 D.3610.在一个长度为 n 的数组中删除第 i个元素(1<=i<=n)时,需向前移动的元素个数是 ()A.i B.n-i C.n-i+1 D.n-i-111、有如下 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-=1else:i+=1执行该程序段后,a[0]的值是 ()A.3 B.1 C.2 D.512、实现上述功能的 Python 程序如下,请在划线处填入合适的代码。#算法 1:使用变量 j逆序扫描数组,再利用 pop(j)方法直接删除重复元素def deduplication_1(arr):i=0while 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+=1else:_______②______n-=c #更新数组长度i+=1del 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+=1n=r #更新数组长度i+=1del arr[n:]13.有如下 Python 程序段:n=4a=[[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 和 10C.6 和 11 D.7 和 1114.有如下 Python 程序段:a=[[0]*4]*3b=[[0]*4 for i in range(3)]a[2][3]=8b[2][3]=8执行该程序段后,下列说法正确的是 ()A.a[0][3]的值为 0,b[0][3]的值为 0B.a[0][3]的值为 0,b[0][3]的值为 8C.a[0][3]的值为 8,b[0][3]的值为 0D.a[0][3]的值为 8,b[0][3]的值为 8数组综合练习一、基础默写图11如上图1所示:用不同的记号笔在上图标识出来index=___[0,1,2]Columns=___[“学号”,”性别”,”年龄”]_______________Values=____[[“s001”,”s002”,”s003”],[ “男”,”女”,”男”],[16,17,18]]_______________图22如上图2所示:用不同的记号笔在上图标识出来index=__________________Columns=__________________Values=___________________3如右图3所示:df.values的结果是———————————二、地区模拟题 图3(0)有如下 Python 代码:data='My Name is Tom!'imax,t=0,0for ch in data:if ('A'<=ch<='Z') or ('a'<=ch<='z'):t+=1else:if t>imax:imax=tt=0print(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=0b=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,次大值 m2for 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=0for j in range(0, 10):if dis[j][i]>max1:max1=dis[j][i]p1= ①ds_count[p1]+= 1print(" 10 个传感器最大值出现的次数为",ds_count)max2=p2=0for i in range(0, 10):if ds_count[i]>max2:max2=ds_count[i]p2=iprint("次数最多的是", ② ,"粉尘传感器。")(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=numi,sum=1,0while n>i:for j in range(i):_______① _________________② ________i+=1if 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]=s8、(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、D10、B11、C12、(1)len(arr)-1,i,-1(2)arr[j-c]=arr[j](3)arr[j]!=arr[i]DC 展开更多...... 收起↑ 资源列表 浙教版信息技术选修1第二章2.1数组综合练习题.docx 浙教版信息技术选修1第二章2.1数组综合练习题答案.docx