2.4 可以复用的代码 2024-2025学年高中信息技术教科版(2019) 必修1

2024-08-11
| 14页
| 131人阅读
| 0人下载

内容正文:

2.4 可以复用的代码 一、选择题 1.下列选项的语句中,与“若x小于0则y=-1,否则y=1”功能相同的是(   ) A. if x<0:     y=-1 y=1 B. y=1 if x<0:     y=-1 C. if x<0:     y=-1 if x>0:     y=1 D. if x>0:     y=1 else:     y=-1 A.A B.B C.C D.D 2.有如下Python程序: import random s='IloveChina' res='' i=0 while  i<=5: k=random. randint(0,5)*2-1 res+=s[k] i+=1 print(res) 执行该程序后,输出的结果不可能是(    ) A.lavCCv B.11Cvv C.IloveC D.iiiii 3.Python 表达式“a+b* *2+1/ (c+3*d)”对应的数学代数式是(   ) A. B. C. D. 4.以下属于关系运算符的是(   ) A./= B. == C.** D.% 5.有如下Python程序段: s = input(); t = 0; mw = "" for i in range (len(s)):     ch= s[i]     if "0" <= ch <= "9"         t = t * 10 + int(ch)     elif ch == "-":       mw += chr(t % 26 + 65)     elif "A" <= ch <= "Z"         t = 0     else:         mw += ch print (mw) 执行该程序段输入27a-J2024Y-08!,则输出的结果是(    ) A.aBA! B.aA! C.aBW! D.aBAI! 6.使用列表flink模拟链表结构(节点数大于1),每个节点包含起始数值、连续长度、指针区域,h为头指针。链表中各节点已按起始数值由小到大排列,各个节点表示的数值区间不重叠,例如链表 flink为[[20,100,3],[150,50,2],[250,60,-1],[120,30,1]],h-0,其中节点[20,100,3]表示从数值20开始有长度为100的连续值(20到119),3代表后继节点索引为3,现要合并链表各节点连续的数值区间,合并后链表flink的数据修改为[[20,180,2],[150,50,2],[250,60,-1],[120,30,1]],h=0。实现该功能的程序段如下: q=h=0 p=flink[q][2] while p!=-1:     if flink[p][0]==flink[q][0]+flink[q][1]:         flink[q][1]=flink[q][1]+flink[p][1]     else:         (1)     (2)     (3) 上述程序中方框处可选语句为:①q=p  ②flink[q][2]=p  ③p=flink[p][2] 则(1)、(2)、(3)处语句依次是(   ) A.①、②、③ B.①、③、② C.②、①、③ D.②、③、① 7.数组y中存放了n个数据,将所有偶位数据向前移动,奇位数据不变。如数组[1,4,7,9,16,25],处理后得到结果[7,4,16,9,1,25]。实现该功能的Python程序段如下,划线处应填入的正确代码组合为(   ) tmp=y[0] for i in range(① ):     ② y[n-2]=tmp A.① n-2,0,-2  ② y[i-2]=y[i] B.① 2,n,2  ② y[i-2]=y[i] C.① 0,n-1,2 ② y[i] =y[i+2] D.① n-4,-1,-2 ② y[i] =y[i+2] 8.下列Python程序的功能是在有序链表中,插入一个新的数,使其仍然有序。 a=[[89,-1],[43, 4],[1,3],[21,5],[49,0],[27,1]] x=int(input('请输入要插入的数: ')) head=2; p=head while p!=-1 and a[p] [0]<x:     q=p     p=a[p][1] if p==head:     a.append([x, head] )     head=len(a)-1 else:      # 输出链表a中所有数据,代码略 方框中的代码由以下三部分组成:①a.append([x,-1])  ②a[q] [1]=len(a)-1  ③a[len(a)-1][1]=p 下列选项中,代码顺序正确的是(   ) A.③②① B.③①② C.①③② D.②①③ 9.定义如下函数: def fun(x,y):     if x<0:         return y     else:         return fun(x-2*y-1,y-1) 执行语句s=fun(13,3)后,s的值为(   ) A.0 B.1 C.2 D.3 10.在Python语言中,下列表达式结果为False的是(   ) A.(5**2)>(5*2) B.(5//2)<(5%2) C.(5>2) or (5<2) D.(5>2) and (5<2) 11.在Python中,以下赋值语句的说法错误的是(   ) A.语句a , b=3表示将3同时赋值给变量a和b B.“=”表示将右边表达式的值赋给左边的变量 C.语句x,y =y,x可以实现变量x和y值的互换 D.c+= a等效于c=c+ a 12.在 Python 中,执行以下语句后,显示的结果是(   ) >>>a=10;b=5 >>>a-=b >>>b+=a >>>print(a,b) A.5,10 B.10,5 C.5,5 D.10,10 13.打印出所有的“水仙花数”,所谓水仙花数是指一个三位数,它的每个位上的数字的3次幂之和等于它本身(例如:1^3+5^3+3^3=153),如果将所有的三位数一一列举,逐个判断,横线处应填(   ) for i in range( ):     b=i//100     s=i%100//10     g=i%10     if b**3+s**3+g**3==i:         print(i) A.100 to 999 B.100,999 C.100,1000 D.100 1000 14.我国古代著名的数学专著《孙子算经》中有这样一道题:“今有物,不知其数。三三数之,剩二;五五数之,剩三;七七数之,剩二。问:物几何? 请完善以下Python程序,实现:输出1000以内符合上述条件的所有整数及其个数。 ① for i in range(1001):     if i%3==2 ② i%5==3 ③ i%7==2:         s+=1         print(④ ) print("1000以内满足条件的数共有%d个"%s) 要实现题目要求,下列填入的代码完全正确的选项是(     ) A.①s=0  ②and  ③or  ④s B.①s=1  ②or  ③and  ④i C.①s=0  ②and  ③and  ④i D.①s=1000  ②and  ③or  ④s 15.有如下Python程序段: import pandas as pd s1 = pd. Series (["学习", "运动", "睡觉", "吃饭"], index = ["01", "02", "03", "04"]) sl ["03"] = "休息" bm = s1. index sub = s1. values time = [40,90,79,30] num = [13,2,10,3] col = ["活动", "时长", "次数"] data = {"活动": sub, "时长": time,"次数": num} df1= pd. DataFrame (data, index = bm, columns = col) print (df1[df1 ["时长"]*df1["次数"]>120]) 运行该程序段,输出显示的结果为(    ) 活动时长次数 A. B. C. D. 二、填空题 16.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) 该程序段运行后,最后输出的内容是 。 17.Python表达式125//3的运算结果是( ) 18.在Python中,range()函数可以生成一个整数序列,但是它生成的序列不包含序列的上限值,即range(10)会生成从0到 的序列。 19.用户自定义函数是用户自己写的一段程序。一般包括 、 、 和 等四部分。其中 和 是必不可少的, 和 可根据需要进行定义。 20.函数的调用采用 的方式。 三、判断题 21.表达式list('[1, 2, 3]')的值是[1, 2, 3]。( ) 22.用户自定义函数是用户自己写的一段程序.一般包括函数名、参数、  返回值、函数体等四部分.其中,函数名和参数是必不可少的部分.( ) 23.在Python3.x语言中,input()函数的返回值类型是字符串。( ) 24.Python语言的变量名要区分英文字母的大小写。( ) 四、操作题 25.某学校工会举行书画大赛,共邀请8位评委,评分范围为1至10分,选手总分为8位评委评分之和去掉1个最高分和1个最低分,文本文件scores.txt存放选手的相关数据,每行数据由4位字符的选手编号和8位评委的评分组成,如图a所示。            图a                                               图b (1)主程序。从文本文件中读取数据,计算选手总分,按照总分由高到低输出。运行结果如图b所示,请在划线处填入合适的代码。 data=caltotal("scores.txt")  #读取数据,计算选手总分 print("各选手总分数据为:",data) flag=[True]*len(data)   #标记数据被使用情况 print("总分从高到低为:") for i in range(len(data)):     pos=findmax(data,flag)     flag[pos]=     print(data[pos][0],data[pos][1]) (2)编写caltotal函数,功能为从文本文件读取数据,计算选手总分,返回列表。请在划线处填入合适的代码。 def caltotal(filename):     f=open(filename)  #打开文件     line=f.readline()   #从文件中读取一行     data=[]     while line:         xs=         sp=line[5:].split(",")  #以逗号为分割符,切分每行数据,如['8','7','3','10','10','5','7','4']         s=tot(sp)         data.append([xs,s])  #将选手编号和最终得分添加到列表data         line=f.readline()     return data (3)编写tot函数,功能为计算每个选手的得分。请在划线处填入合适的代码。 def tot(sp):     s=0     imax=0     imin=11     for i in range( ):         val=int(sp[i])         if val>imax:             imax=val         if val<imin:             imin=val         s+=val     s=s-imax-imin     return s (4)编写findmax函数,参数data列表存储选手数据,flag列表存储标记。 def findmax(data,flag):     maxnum=0     for i in range(len(data)):         if :             maxnum=data[i][1]             pos=i     return pos 请在划线处填入合适的代码,正确的选项是 (单选,填字母)。 A.maxnum<data[i][1]                     B.maxnum<data[i][1]andflag C.maxnum<data[i][1]andflag[i]             D.maxnum<data[i][1]andnotflag[i] 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.B 【详解】本题考查Python基本语句。要注意的是x=0时,y=1,选项A所有的情况y都是1。故选B。 2.C 【详解】本题考查程序分析。该程序功能切片字符串s,切片索引为k,k的值可能为:-1、1、3、5、7、9。s[k]的可能结果为:a、l、v、C、i。故不可能出现选项C。故正确答案为选项C。 3.C 【详解】本题考查Python运算符与表达式相关内容。A选项,对应Python表达式为:(a+b)**2+3/(c+d)。B选项,对应Python表达式为:a+2*b+1/c+3*d。C选项,对应Python表达式为:a+b**2+1/(c+3*d)。D选项,对应Python表达式为:a+b**2+1/(3*(c+d))。与题干表达式对应的是C选项,故本题答案是C选项。 4.B 【详解】本题考查的是Python关系运算符。在Python中常见的关系运算符:==、>、<、>=、<=、!=。/=是除法赋值,**是幂乘,%是求余。故选B。 5.A 【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程如图所示:。故本题答案是A选项。 6.B 【详解】本题考查Python程序。当不满足合并条件时,需要将当前节点后移(q=p),更新当前节点的后继指针(flink[q][2]=p),然后再获取新的后继节点(p=flink[p][2])。所以(1)处为①,(2)处为③,(3)处为②。故答案为:B。 7.B 【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,以数组[1,4,7,9,16,25]为例:A选项,将代码带入程序段,分析其运行,可得结果为:[16, 4, 16, 9, 1, 25],不符合题意。B选项,将代码带入程序段,分析其运行,可得结果为:[7,4,16,9,1,25],符合题意。C选项,若i=n-2,y[i+2]=y[n],索引越界溢出,语法错误。D选项,将代码带入程序段,分析其运行,可得结果为:[16, 4, 16, 9, 1, 25],不符合题意。故本题答案是B选项。 8.C 【详解】本题考查Python程序。为了在有序链表中插入一个新的数,使其仍然有序,需要按照正确的顺序修改链表的指针。首先,应将新的节点添加到链表的末尾,即执行①a.append([x,-1]);然后,将新节点的指针指向插入位置的下一个节点,即执行③a[len(a)-1][1]=p;最后,将前一个节点的指针指向新节点,即执行②a[q][1]=len(a)-1。故答案为:C。 9.A 【详解】本题考查Python程序。在函数fun(x,y)中,当x<0时返回y,否则进行递归调用fun(x-2y-1,y-1)。对于fun(13,3),第一次调用:13>0,继续调用fun(13-2*3-1,3-1)即fun(6,2)。第二次调用:6>0,继续调用fun(6-2*2-1,2-1)即fun(1,1)。第三次调用:1>0,继续调用fun(1-2*1-1,1-1)即fun(-2,0)。此时-2<0,返回0。故答案为A。 10.BD 【详解】本题考查Python表达式。选项A中,5**2=25,5*2=10,25>10,结果为True。选项B中,5//2=2,5%2=1,2>1,结果为False。选项C中,5>2为True,5<2为False,True or False结果为True。选项D中,5>2为True,5<2为False,True and False结果为False。故答案为:BD。 11.A 【详解】本题考查Python赋值语句。在Python中,语句a,b=3并不会将3同时赋值给变量a和b。这种语法是错误的,实际运行时会引发ValueError,因为左侧有两个变量,右侧只有一个值,无法解包。正确的做法是分别给每个变量赋值,例如a=3和b=3,或者用a,b=3,3。故答案为:A。 12.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。 13.C 【详解】本题考查Python程序。三位数的所有可能的范围是100~999,将所有的三位数一一列举,逐个判断,条件语句中求出一个三位数的百位、十位、个位上的数字的三次方的和,两者相等,即所求的数。A选项,格式错误;B选项,只能取到100~998;D选项,不能用空格。故答案为:C。 14.C 【详解】本题考查Python程序。题目要求找出1000以内符合特定条件的所有整数,并计算其个数。根据题意,整数需要满足三个条件:对3取余为2,对5取余为3,对7取余为2,这三个条件需要同时满足,因此需要用and逻辑运算符。初始化计数变量应为0,并在满足条件时输出该整数。因此,填入的代码应该是:①s=0;②and;③and;④i。故答案为:C。 15.B 【详解】本题考查的是程序调试与运行。根据最后一行语句可知,筛选的是时长和次数之积大于120的数据。根据倒数第二行语句可知,索引是bm,列标题是col。故本题应选B。 16.2 【详解】本题考查程序设计。 该程序输出,统计列表中前面两个数相加等于第三个数的个数。第一次循环1+2等于3,c+=1。第二次循环1加3等于4,c+=1;第三次循环3+4不等于5。故正确答案为:2。 17.41 【详解】本题考查Python表达式的运算。//是整除运算符,因此125//3=41。 18.9 【详解】本题考查Python函数。range()函数用于生成一个整数序列,但生成的序列不包含上限值。具体来说,range(10)会生成从0到9的整数序列,即包含起始值0但不包含上限值10。因此,range(10)会生成从0到9的序列。故答案为:9。 19. 函数名 参数 返回值 函数体 函数名 函数体 参数 返回值 【详解】本题考查的是自定义函数。自定义函数包括函数名、参数、返回值、函数体和函数名,其中函数名和函数体是必不可少的,参数和返回值可根据需要进行定义。 20.函数名(参数) 【详解】本题考查的是Python函数相关知识。函数的调用采用函数名(参数)的方式。 21.错误 【详解】本题考查Python基础。 表达式 list('[1, 2, 3]') 的值并不是 [1, 2, 3]。在Python中,list() 函数用于将可迭代对象转换为列表,但如果直接传入一个字符串,list() 函数会将字符串中的每个字符视为列表的一个单独元素。故错误。 22.错 【详解】本题考查自定义函数。用户自定义函数是用户自己写的一段程序.一般包括函数名、参数、返回值、函数体等四部分.其中,其中参数和返回值可根据需要进行定义。题干说法错误。 23.正确 【详解】本题考查Python函数。input()函数用于从标准输入读取一行,并将其作为字符串返回。无论用户输入什么内容,input()函数返回的值始终是字符串类型。故说法正确。 24.正确 【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。 25. False line[:4] len(sp)或0,len(sp) C 【详解】(1)根据代码flag=[True]*len(data),可知flag用于标记数据被使用情况;flag[pos]=False表示该数据已经使用过; (2)本题考查字符串切片,由第12题图a可知,第一行数据为['s001':'8','7','3','10','10','5','7','4'],xs为line[:4]; (3)range遍历的范围为len(sp); (4)观察主程序可知,先使用findmax函数在数组data中查找最大值的位置pos,再将列表flag中该位置的值修改为False,表示该数据已经使用。接着再使用findmax函数在数组data中查找最大值的位置,由于之前已经将最大值标记为使用,所以函数返回的值即第二大值的位置,以此类推,从而实现排序。所以划线处if条件语句必须满足maxnum的值小于data[i][1],并且位置i没有被使用(即flag[i]的值为True),答案为C。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

2.4 可以复用的代码 2024-2025学年高中信息技术教科版(2019) 必修1
1
2.4 可以复用的代码 2024-2025学年高中信息技术教科版(2019) 必修1
2
2.4 可以复用的代码 2024-2025学年高中信息技术教科版(2019) 必修1
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。