资源简介 第二单元 编程计算 单元测试一、选择题1.有如下Python程序段:s="VictoryOnTheWay"#'A'的ASCII值为65,"a"的ASCII码值为97mx=""pre=0for i in range(1,len(s)): if ord(s[i]) < 97: if mx mx=s[pre:i] pre=iprint(mx)A.Victory B.On C.The D.Way2.“洗衣机的洗衣流程”情境问题,洗衣机模拟人洗衣的过程,自动执行洗衣程序,节省了大量的人力,这主要归功于由算法控制的机器设备。某儿童牌洗衣机在最后一道漂洗过程中可将水加热至95℃,能够杀灭金黄色葡萄球菌、大肠埃希氏菌等多种附着在衣物上的细菌,除菌率可达99%以上。下列程序中横线处应该填写( )n = int(input("请输入洗涤的次数:"))for i in range(n): print("第",i,"次洗涤:") if : print("加热至95℃") else: print("正常水温")A.i < n B.i == n C.i == n+1 D.i == n-13.某Python程序如下:list1=[3,4,8,6,9]c=0i=0while i if list1[i]%3==0: c+=list1[i] else: c-=list1[i] i+=1print(c)程序运行后,输出的结果是( )A.5 B.6 C.7 D.94.已知 18.5<=BMI<=24.9 为正常标准,某同学的BMI值存储在变量BMI中,编写程序判断该同学的身体状况信息,并保存到变量 result 中,则下列程序段无法实现该功能的是( )A. B. C. D.5.下列程序段执行后,结果与其他三项不同的是( )A. B. C. D.6.已知斐波那契数列前7项值为 1,1,2,3,5,8,13…,计算该数列第n项的Python程序如下:a=b=1n=int(input(“请输入项数:”))for i in range(n-2):print("第n项为:",b)加框处可选的语句有:①a=b-a ②b=a ③b=a+b ④a=b下列选择的语句正确的是( )A.③① B.②④ C.④② D.①③7.求列表第 3 项至第 7 项元素的和,划线处正确的Python表达式是()lis=[6,3,-2,5,19,21,-9,22,14,25]he=[0]*10he[0]=lis[0]for i in range(1,len(lis)):he[i]= he[i-1]+lis[i]print( )A.he[7]-he[3] B.he[6]-he[2] C.he[7]-he[2] D.he[6]-he[1]8.象限是平面直角坐标系(笛卡尔坐标系)中横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y轴为分界线,原点和坐标轴上的点不属于任何象限。某同学根据输入的坐标点(x,y)来判断该坐标点的位置所在。以下实现该分类的Python程序段中不正确的是( )A. B. C. D.9.有如下Python程序段:from random import randints=[″C++″,″Java″,″VB″,″Pascal″,″C″,″Python″]for i in range(2):k=randint(0,2)*2s=s[:k]+s[k+1:]print(s)执行该程序段后,变量s的值不可能是( )A.[″Java″,″VB″,″Pascal″,″C″] B.[″C++″,″Java″,″C″,″Python″]C.[″C++″,″VB″,″Pascal″,″Python″] D.[″C++″,″Java″,″Pascal″,″Python″]10.在Python当中运行以下程序时,按提示输入密码为“123456”,则得到的运行结果是( )psw=input('请输入您的密码:')if psw=='000000': print('欢迎您')A.请输入您的密码 B.000000C.欢迎您 D.无结果显示11.执行以下代码,并根据提示输入5,则输出的结果是( )a=input("请输入你的选择1-3:")if a=='1': print("青年组")elif a=='2': print("少年组")elif a=='3': print("幼儿组")else: print("程序已退出")A.青年组 B.少年组 C.幼儿组 D.程序已退出12.在Python当中执行以下程序时,用户输入78,则得出的结果是( )n=int(input("请输入分数:"))if n>=60: print("合格")else: print("不合格")A.78 B.60 C.合格 D.不合格13.在Python当中,range(1,6)生成的整数列表是( )A.[1,2,3,4,5,6] B.[1,2,3,4,5]C.[2,3,4,5,6] D.[2,3,4,5]14.在程序设计当中,面对大量重复的问题,宜使用( )来提高效率A.顺序结构 B.选择结构 C.循环结构 D.重复结构15.在使用if语句时需要注意,在if(条件表达式)后面要加英文符号( )A.: B., C.. D.;二、填空题16.实现循环控制的三要素是 、 和 。17.在 IDLE 编辑器中运行以下程序,依次输出的数字是 。for i in range(1,5): print(i,end="," )18.在 IDLE 编辑器中运行以下程序,屏幕打印 颗*。for i in range(0,10,2): print(" *" )19.在循环结构中,break语句的作用是 。20.当飞船速度“v>=7.91”时,输出“飞船成功飞行!”,否则输出“飞船不能升空!”。v=input(“请输入速度(千米/秒):”) 第1行if v>=7.91: 第2行 print("飞船成功飞行!") 第3行else 第4行 print("飞船不能升空!") 第5行(1)第 行,改正后的语句 。(2)第 行,改正后的语句 。三、判断题21.循环语句可以嵌套使用。( )22.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )23.for循环与while循环任何时候都不可以相互替换。( )24.Python中这两个程序段运行后,虽然变量a中的值是相同的都是12,但程序执行后在屏幕上输出的内容是不完全相同的。( )25.循环结构表示程序反复执行某个或某些操作,直到判断条件为真时才可以终止循环。( )四、操作题26.小陈在学习历史时,发现从公元1000年至今,有的日期特别“优美”,如1010年01年01日,2021年12月02日,小陈把它们称为“对称日”。为了寻找指定年份中的“对称日”,小陈编写了如下的Python程序,程序运行结果如下图所示。(1)主程序,加框处的代码存在错误,请在下划线处改正。ks=int(input("请输入开始年份:"))js=int(input("请输入结束年份:"))for i in range(ks,js+1): k1=str(i) k1=k1+ #根据年份,生成8位对称日期 if check(k1)==True:#验证8位对称日期是否存在逻辑错误 print(k1)(2)check(x)函数功能:判断8位日期x是否存在逻辑错误,若存在逻辑错误,返回False,否则返回False。请完成代码填空。def check(k): y=int(k[0:4]) m=int(k[4:6]) d=int(k[6:8])if month(m)==False:#调用month(m)函数,判断月份是否存在逻辑错误 return False if days(y,m,d)==False:#调用days(y,m,d)函数,判断日期是否存在逻辑错误 return False return(3)leapyear(y)函数功能:判断年份y是否为闰年,若为闰年,返回True,否则返回False。请完成代码填空。def leapyear(y):#判断闰年 flag= if y%4==0 and y%100!=0: flag=True elif y%400==0: flag=Truereturn flag(4)month(m)函数功能:用于判断月份是否超出范围1~12月,若没有超出范围,返回True,否则,返回False。请完成代码填空。def month(m):#判断月份是否满足要求 flag=True if : flag=Falsereturn flag(5)days(y,m,d)函数功能:根据年份y判断是否闰年,结合月份确定该月份m的天数,若d超过该月天数,返回False,否则返回True。请完成代码填空。def days(y,m,d):#判断天数是否满足要求 lst=[31,28,31,30,31,30,31,31,30,31,30,31] if leapyear(y) and m==2: k= else: k=lst[m-1] if d<1 or d>k: return False else: return True27.学校筹办校庆,向校友提供“教室预约”服务。校友以班级为单位,在线提交预约申请。学校当前预备了m个教室,按“教室名”升序排序后编定“教室序号”。教室信息和预约申请内容如下图所示(教室已按教室名升序排序,预约申请中“预约序号”为0的记录表示:91届1班的校友申请在8:00-9:30期间使用教室)。 图1 图2学校按“预约序号”顺序,逐条处理预约申请,处理时按“教室序号”顺序,逐个教室检查,安排使用第一个预约时间不冲突的教室。按此规则逐条处理上图的10条申请,“立德楼101”教室将安排“预约序号”为0、2、3、8的申请。编写程序实现预约功能,按时间顺序输出各个教室接受的预约安排,如图3所示。图3部分代码如下,请回答以下问题。(1)上例中若新增一个使用时间为“8:00-9:00”的申请,应安排的“教室序号”为 。(填写0-8的数字)(2)定义check(k,i)函数,功能为判断预约序号为k的申请,能否安排到序号为i的教室。def check(k,i): n= len(jslst[i][2])#列表jslst[i][2]存储教室序号为i的教室已接受的预约序号 if n == 0: return True for p in jslst[i][2]: if not(yylst[k][3] <= yylst[p][2] or ____): return False return True划线处应填写代码:(3)定义work(k)函数,功能为依次枚举每个教室,为“预约序号”为k的申请安排教室。def work(k): p= -1 for i in range(len(jslst)): if____: jslst[i][2].append(k)#将“预约序号”k存入“教室序号”为i的教室 p=i break return p划线处应填写代码:(4)定义sort(a)函数,参数列表a中的存储“预约序号”,将这些申请按题意排序。def sort(a): n = len(a) for i in range(n-1): for j in range(0,n-i-1): if yylst[a[i]][2] > yylst[a[i+1]][2]: a[i],a[i+1] = a[i+1],a[i]若将划线处的代码修改为yylst[a[i]][3] > yylst[a[i+1]][3],排序结果会不会改变 。(填:会/不会)(5)主程序。读入预约申请信息存入列表yylst,存储格式为[预约班名,开始时间,结束时间,教室序号],如[3,'00届5班','10:30','11:30',1],“预约序号”为3的申请,安排在“教室序号”为1的教室,时间格式统一为5位字符组成"XX:XX"。读入升序排序的教室清单存入一维数组jslst,如[0,'立德楼101',[0,2,4]],表示“教室序号”为0的教室,接受“预约序号”为0,2,4的3个预约申请。for i in range(len(yylst)): #按“预约序号”顺序,逐条处理预约申请 t = work(i) if________: print("预约序号为",i,"的申请无法被安排") else: yylst[i][4] = tfor i in range(len(jslst)):#对各个教室接受的预约安排进行排序 sort(jslst[i][2])#输出各个教室接受的预约安排,代码略。划线处应填写代码:五、简答题28.定义函数的基本格式是: 。29.在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。4 1 5 2 3 a(1)~a(n)中存储第一个分配方案2 3 4 5 1 a(n+1)~a(2*n)中存储第二个分配方案↑第i列中的作品拿给i号参赛者打分图a②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。请回答下列问题:(1)n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是 (单选,填字母:A.5 4 3 1 2/B.5 4 1 3 2/C.3 4 5 1 2)(2)请在划线处填入合适的代码。Dim n As Integer '总人数/总作品数Dim m As Integer '每人分配篇数Dim a(1 To 500) As Integer '数组a大小满足处理要求Dim c(1 To 100) As Integer '数组c大小满足处理要求Private Sub Command1_Click() Dim i As Integer, j As Integer, k As Integer n = Val(Text1.Text): m = Val(Text2.Text) Randomize i = 1 Do While i <= m For j = 1 To n c(j) = 0 '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1 Next j For j = 1 To n If j = n - 1 And c(n) = 0 Then ① Else k = r(n, j) End If a((i - 1) * n + j) = k '分配数字k到当前方案的第j个位置上 c(k) = 1 Next j If ② Then i = i + 1 Loop s = "" For i = 1 To n s = "参赛者" & i & ":" For j = 1 To m s = s + Str(a((j - 1) * n + i))+ "," Next j List1.AddItem s s = "" Next iEnd SubFunction r(x As Integer, y As Integer) As Integer '生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0End FunctionFunction check(c As Integer) As Boolean '本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE Dim p As Integer,f As Boolean f = True p = 1 For i = 1 To c * n If ③ Then f = False: Exit For End If p = p mod n +1 Next i check = fEnd Function参考答案1.A2.D3.B4.B5.C6.A7.D8.B9.C10.D11.D12.C13.B14.C15.A16.初值 终值 循环体17.1,2,3,418.519.结束当前循环/终止当前循环20.1 v = float(input("请输入速度(千米/秒):")) 4else:21.正确22.正确23.错误24.正确25.错误26.k1[::-1] True False m==0 or m>12 lst[m-1]+1或2927.2 yylst[k][2] >= yylst[p][3] check(k,i) 或 check(k,i)==True 不会 t==-128.def 函数名(参数): #函数说明 语句或语句组 return 返回值29.(1)B (2)①k= n ②check(i - 1) ③a(i) = a(c * n + p) 展开更多...... 收起↑ 资源预览