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

2024-09-04
| 2份
| 15页
| 498人阅读
| 2人下载

内容正文:

数组综合练习 一、基础默写 图1 1如上图1所示:用不同的记号笔在上图标识出来 (1) index=__________________ (2) Columns=__________________ (3) Values=___________________ 图2 2如上图2所示:用不同的记号笔在上图标识出来 (4) index=__________________ 学号 性别 年龄 0 s001 男 16 1 s002 女 17 2 s003 男 18 (5) Columns=__________________ (6) Values=___________________ 3如右图3所示: df.values的结果是 [ [____(1)___ ], ['s002' '女' 17], ['s003' '男' 18] ] ——————————— 二、地区模拟题 图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) 7、 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 i<n: if 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 i<len(arr): for 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 i<n: c=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 i<n: r=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所示:用不同的记号笔在上图标识出来 (1) index=___[0,1,2] (2) Columns=___[“学号”,”性别”,”年龄”]_______________ (3) Values=____[[“s001”,”s002”,”s003”],[ “男”,”女”,”男”],[16,17,18]]_______________ 图2 2如上图2所示:用不同的记号笔在上图标识出来 (4) index=__________________ 学号 性别 年龄 0 s001 男 16 1 s002 女 17 2 s003 男 18 (5) Columns=__________________ (6) Values=___________________ 3如右图3所示: df.values的结果是 [ ['s001' '男' 16], ['s002' '女' 17], ['s003' '男' 18] ] ——————————— 二、地区模拟题 图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) 7、 ①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] 13、 D 14、 C 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

浙教版信息技术选修1第二章2.1数组综合练习题
1
浙教版信息技术选修1第二章2.1数组综合练习题
2
浙教版信息技术选修1第二章2.1数组综合练习题
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。