资源简介 (共36张PPT)验收卷(三) 算法的程序实现第三章 算法的程序实现(考试时间40分钟;满分50分)一、选择题(本大题共12小题,每小题2分,共24分,在每小题给出的四个选项中,只有一个符合题目要求,多选、少选、不选均不得分)1.Python 表达式 int(19/4)-25%3**2 的值是( )A.-3 B.-2 C.2 D.3A2.下列 Python 表达式中,值为 True 的是 ( )A."ac" in "abcabc"B.9/3**2!=1C.abs(-4.3)>9∥2D."12"=="123456"[1:3]C3.下列Python表达式中,值为True的是 ( )A.2**3==64**0.5B.985>211 and not "book"<"pen"C."Chat" in "chatGPT"D.len("Python")>6A4.下列表达式的结果为 True 的是 ( )A.not "a" in "apple"B. 2023%1000∥4==23C. "t" in ["tomato","bear","banana"]D. "abc"*2>="abca"D5.已知字典rec中存储着某超市部分水果的类别编码,其值为rec={"01":"苹果","02":"人参果 ","03":"阳光玫瑰葡萄","04":"红心火龙果","05":"果冻橙"},现要在字典rec中增加一个键为 "06",值为"甜蜜柚"的元素,下列Python语句能实现的是 ( )A.rec[06]="甜蜜柚"B. rec["06"]="甜蜜柚"C. rec["06"]={"甜蜜柚"}D. rec["06"]="06":"甜蜜柚"B6.普通车辆高速公路超速罚款规则如下:(1)超过规定时速10%(含10%)以内,暂不处罚;(2)超过规定时速10%以上未达50%(含50%)的,处以200元罚款;(3)超过规定时速50%以上的,处以 2000元罚款。若用变量v表示高速公路规定时速,变量vt表示车辆行驶时速,变量k表示车辆的罚款,则下列程序段无法正常实现车辆行驶时速vt和罚款k之间关系的是 ( )CA.if vt<=v*1.1: k=0 elif vt<=v*1.5: k=200 else: k=2000B.if v*1.1 k=200 else: k=0 if vt>v*1.5: k=2000C.k=0 if vt>v*1.1: k=200 elif vt>v*1.5: k=2000D.k=2000 if vt<=v*1.1: k=0 elif vt <=v*1.5: k=2007.根据国家标准,室内空气质量指数的正常范围为0.5~2.5,如果空气质量指数大于2.5,则表明空气质量较差,空气质量指数小于0.5,表明空气质量较好,下列选项能正确表示这三种情况的是 ( )DA.if zs>2.5: print("较差") elif 0.5 print("正常") else: print("较好")B.if 2.5>zs>0.5: print("正常") elif zs<0.5: print("较好") else: print("较差")D.if zs<0.5: print("较好") elif not zs>2.5: print("正常") elif zs>2.5: print("较差")C.if zs>2.5: print("较差") elif not zs>0.5: print("较好") else: print("正常")解析 A选项elif 条件应为0.5<=zs<=2.5;B 选项if 条件应为2.5>=zs>=0.5;C 选项中,elif 中条件应为not zs>=0.5。8.有如下 Python 程序:s="abcdefghijk";res=0for i in range(1,len(s),2): res+=ord(s[i])-ord(s[i-1])print(res)运行该程序,输出的结果是( ) A.5 B.6 C.9 D.10解析 每2个字母一组,后一个与前一个字母的ASCII码的差值,共有5组。A9.“回文串”是一个正读和反读都一样的字符串。下列Python段的功能是:输入一个字符串,判断该字符串是否为回文串,若是则输出“Yes”,否则输出“No”。s=input("请输入字符串:")i=0j=len(s)-1flag=Truewhile i if s[i]==s[j]: i+=1 ① else: flag=Falseif ② : print("Yes")else: print("No")则程序划线①②③处应填入的语句为( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1 ②flag D.①j-=1 ②not flagC解析 本题程序的功能是判断字符串是否为回文串。本题采用双指针的方法来判断头尾一对字符,变量 i指向字符串的头部,j 指向字符串的尾部。因此①处代码为 j-=1 或 j=j-1,最后根据逻辑变量 flag 的值来判断是否为回文串,当 s[i]!=s[j]时,flag 为 False,因此②处代码 flag 或 flag==True。10.有如下Python程序段:a=[3,5,2,4,1]sum1=m=a[0]for i in range(1,len(a)): if a[i] m=a[i] sum1+=m执行该程序后,sum1的值为( )A.6 B.9 C.11 D.15C解析 程序功能是每次将 a[i]与 m 中的较小值累加到变量 sum1 中,因此 sum1=3+3+2+2+1=11。11.用Python程序处理图像文件“chenchen.jpg”,该图像颜色位深度为24bit,图像如图所示,程序代码如下: else: img[i,j]=0plt.imshow(img,cmap="gray")plt.show()下列说法正确的是( )A.待处理图像的文件名为"chenchen"B.处理后的图像像素数将增加C.将加框处语句中的“>”改为“<=”,则处理后的图像中黑白色将互换D.将加框处语句中 128 改为 188,则处理后图像中的黑色部分将减少C12.某Python程序如下:s=[3,3,3,6,6,8,11,11,9,4,2,5]r=[]for i in range(1,len(s)-1): if not(s[i-1]s[i]>s[i+1]): if s[i-1]==s[i]: continue j=len(r)-1 while j>=0 and s[i]<=s[r[j]]: j-=1 if j==len(r)-1 or j==-1: j+=1 r=r[:j]+[i]+r[j:]print(r)程序运行后,输出的结果为( )A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]D二、非选择题(本大题共4个小题,共26分)13.数据在网络传输中,带宽是宝贵的资源,通过压缩传输的字符串,可以减少数据量,从而加快传输速度,节省带宽资源。现有一种字符压缩方法描述如下:对于连续的若干个相同的子串“X”会压缩为“[DX]”的形式(D是一个整数且1≤D≤99),如字符串“ABABABAB”就压缩为“[4AB]”或者“[2[2AB]]”,类似于后面这种压缩之后再压缩的称为二重压缩。如果是“[2[2[2AB]]]”则是三重的。现给出一串压缩后的结果,并对其进行解压缩。思路:先找出每个左括号的位置,然后从后往前枚举,找出每一个括号内要解压的子串以及要解压的次数,将子串解压后得到一个新串,重复操作,得到最终的解压缩结果。例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。(1)已知采用上述压缩方法得到的压缩结果是“[2Z[2DB]]”,则解压缩结果为 。 (2)根据上述描述,小明利用 Python 设计了一个解压缩程序,请在划线处填入合适的代码。start = []s=input("请输入压缩结果:")for i in range(len(s)): if s[i]=="[": start.append(i)for i in range(len(start)-1,-1,-1): num=0;temp=" " ① while j if "0"<=s[j]<="9": num=num*10+int(s[j]) else: ② j+=1 ans=num*temp s=s[:start[i]]+③ #重新构造字符串 print("解压结果为:"+s)答案 (1)ZDBDBZDBDB (2)①j=start[i]+1 ②temp+=s[j] ③ans +s[j+1:]14.腾讯通过 QQ 等级来衡量用户的活跃情况。QQ 等级计算规则如下:①用户当天在线两个小时,记为活跃 1 天;半小时及以上、两小时以下则记为活跃 0.5 天。②根据累计活跃天数对应不同 QQ 等级,如表所示,0 级至 1 级需活跃 5 天,1 级至 2 级需活跃7天,依此类推。③每升1级,用户可以获取1个△,4 个△兑换1个◇,4个◇兑换1个○,4 个○兑换 1个☆。级别 图标 累计活跃天数0级 0天1级 △ 5天2级 △△ 12天3级 △△△ 21天4级 ◇ 32天5级 ◇△ 45天(1)小张的 QQ 等级图标为○◇◇◇△△,则小张 QQ 等级的级别是 。 (2)“log.txt”文件中逐行记录了某位用户每天的在线时长(以小时为单位),编程实现读取文件内容并计算,按☆○◇△的顺序输出用户的 QQ 等级图标,请在划线处填入合适的代码。f=open('log.txt')data=[]active=0icon=["☆","○","◇","△"]#逐行读取'log.txt'文件中的数据,依次添加到 data 列表中,如data=[1.9,2.3,11.5,3.1,2.8,5.2……]代码略#计算用户的活跃天数for i in range(len(data)): if data[i] >= 2: active+=1 elif data[i]>=0.5: ① #计算用户等级base=5level=0while active >=base: level+=1 ② base = base + 2#将等级换算为图标s = " "while level !=0: r = level % 4 s = str(r) + s ③ n=len(s)ans=" " start=4-nfor i in range(n): ans +=④ print(ans)答案 (1)30 (2) ①active+=0.5 ②active=active-base ③level=level∥4④icon[start+i]*int(s[i])15.每个人进、出馆的时间用一个长度为11的字符串表示,例如“08:05-08:45”表示进馆时间为8点05分,出馆时间为8点45分。现要求统计当天馆内人数超过指定人数的总时长,当天在馆人数最多时刻及在馆人数。(1)8点01分到8点08分的进出馆人数如下表所示:分钟 01 02 03 04 05 06 07 08进馆人数 5 0 4 2 1 3 1 2出馆人数 0 1 1 1 6 3 2 2在馆人数最多时刻为 。 (2)每个参观者进入场馆和出馆时间保存在“参观记录.txt”文件中,编写Python程序,请将程序补充完整。rs=[0]*540 #存储早上8点至下午5点每分钟的在馆人数f=open("参观记录.txt",encoding="utf-8")n=0for sj in f : m1=int(sj[:2])*60+int(sj[3:5])-480#将入馆时间转换为上午8点以后的分钟数 m2=int(sj[6:8])*60+int(sj[9:11])-480 rs[m1]+=1 ① sp =int(input("请输入指定人数:"))totrs=imax=sumrs=0itime=""for i in range(540): ② if totrs>sp: ③ if totrs>imax: imax=totrs itime=str(i∥60+8)+":"+str(④ ) print("超过指定人数的总时长:" + str(sumrs) + "分钟")print("在馆人数最多时刻为:" + itime + ",共" + str(imax) + "人")答案 (1)8 (2)①rs[m2]-=1②totrs+= rs[i] ③sumrs+=1 ④i%6016.挖金矿游戏。在一个8行8列的矩阵中,矿工位于第1行第1列的格子,n个金矿随机分布在第1行下面的各个格子中,每个金矿的横坐标依次保存在x数组,纵坐标保存在y数组。矿工收集金矿方法:先确定每行最左边和最右边金矿的坐标,对于同一行的金矿,矿工先移动到最左边金矿正上方,再执行向下x步的指令进行挖矿,接着从该行左边第2个金矿开始一直挖到最右边。该行完成后,再依次挖下方各行的金矿。下图a所示的金矿(图中黑色方块)分布图,按右侧所示的指令,可以收集全部金矿。(1)现有4*4的金矿分布图如图b所示,矿工在左上角位置,写出矿工按规则获得所有金矿的指令(指令之间用逗号或空格隔开) 。 (2)编写程序,按顺序输出指令,使矿工按照规则得到所有金矿,将空白处填写完整。x=[2,2,5,5,5,8] #各金矿行号,从小到大升序排列y=[1,2,4,5,8,6] #各金矿列号,同一行金矿,列号从小到大升序排列n=len(x) #金矿数量px=py=1 #矿工初始位置行号和列号i=0while i beg=i while i i+=1 if y[beg] print("左"+str(py-y[beg])) elif y[beg]>py: print("右"+str(① )) print("下"+str(x[beg]-px)) print("挖矿") for k in range(② ): print("右"+str(y[k]-y[k-1])) print("挖矿") px=x[beg] ③ i+=1答案 (1)下1 挖矿 下2 挖矿 右3 挖矿 或下1,挖矿,下2,挖矿,右3,挖矿(2)①y[beg]-py ②beg+1,i+1 ③py=y[i]验收卷(三) 算法的程序实现(考试时间40分钟;满分50分)一、选择题(本大题共12小题,每小题2分,共24分,在每小题给出的四个选项中,只有一个符合题目要求,多选、少选、不选均不得分)1.Python 表达式 int(19/4)-25%3**2 的值是 ( )A.-3 B.-2 C.2 D.3答案 A2.下列 Python 表达式中,值为 True 的是 ( )A."ac" in "abcabc"B.9/3**2!=1C.abs(-4.3)>9∥2D."12"=="123456"[1:3]答案 C3.下列Python表达式中,值为True的是 ( )A.2**3==64**0.5B.985>211 and not "book"<"pen"C."Chat" in "chatGPT"D.len("Python")>6答案 A4.下列表达式的结果为 True 的是 ( )A.not "a" in "apple"B. 2023%1000∥4==23C. "t" in ["tomato","bear","banana"]D. "abc"*2>="abca"答案 D5.已知字典rec中存储着某超市部分水果的类别编码,其值为rec={"01":"苹果","02":"人参果 ","03":"阳光玫瑰葡萄","04":"红心火龙果","05":"果冻橙"},现要在字典rec中增加一个键为 "06",值为"甜蜜柚"的元素,下列Python语句能实现的是 ( )A.rec[06]="甜蜜柚"B. rec["06"]="甜蜜柚"C. rec["06"]={"甜蜜柚"}D. rec["06"]="06":"甜蜜柚"答案 B6.普通车辆高速公路超速罚款规则如下:(1)超过规定时速10%(含10%)以内,暂不处罚;(2)超过规定时速10%以上未达50%(含50%)的,处以200元罚款;(3)超过规定时速50%以上的,处以 2000元罚款。若用变量v表示高速公路规定时速,变量vt表示车辆行驶时速,变量k表示车辆的罚款,则下列程序段无法正常实现车辆行驶时速vt和罚款k之间关系的是 ( )A.if vt<=v*1.1: k=0 elif vt<=v*1.5: k=200 else: k=2000B.if v*1.1 k=200 else: k=0 if vt>v*1.5: k=2000C.k=0 if vt>v*1.1: k=200 elif vt>v*1.5: k=2000D.k=2000 if vt<=v*1.1: k=0 elif vt <=v*1.5: k=200答案 C7.根据国家标准,室内空气质量指数的正常范围为0.5~2.5,如果空气质量指数大于2.5,则表明空气质量较差,空气质量指数小于0.5,表明空气质量较好,下列选项能正确表示这三种情况的是 ( )A.if zs>2.5: print("较差") elif 0.5 print("正常") else: print("较好")B.if 2.5>zs>0.5: print("正常") elif zs<0.5: print("较好") else: print("较差")C.if zs>2.5: print("较差") elif not zs>0.5: print("较好") else: print("正常")D.if zs<0.5: print("较好") elif not zs>2.5: print("正常") elif zs>2.5: print("较差")答案 D解析 A选项elif 条件应为0.5<=zs<=2.5;B 选项if 条件应为2.5>=zs>=0.5;C 选项中,elif 中条件应为not zs>=0.5。8.有如下 Python 程序:s="abcdefghijk";res=0for i in range(1,len(s),2): res+=ord(s[i])-ord(s[i-1])print(res)A.5 B.6 C.9 D.10答案 A解析 每2个字母一组,后一个与前一个字母的ASCII码的差值,共有5组。9.“回文串”是一个正读和反读都一样的字符串。下列Python段的功能是:输入一个字符串,判断该字符串是否为回文串,若是则输出“Yes”,否则输出“No”。s=input("请输入字符串:")i=0j=len(s)-1flag=Truewhile i if s[i]==s[j]: i+=1 ① else: flag=Falseif ② : print("Yes")else: print("No")则程序划线①②③处应填入的语句为 ( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1 ②flag D.①j-=1 ②not flag答案 C解析 本题程序的功能是判断字符串是否为回文串。本题采用双指针的方法来判断头尾一对字符,变量 i指向字符串的头部,j 指向字符串的尾部。因此①处代码为 j-=1 或 j=j-1,最后根据逻辑变量 flag 的值来判断是否为回文串,当 s[i]!=s[j]时,flag 为 False,因此②处代码 flag 或 flag==True。10.有如下Python程序段:a=[3,5,2,4,1]sum1=m=a[0]for i in range(1,len(a)): if a[i] m=a[i] sum1+=m执行该程序后,sum1的值为 ( )A.6 B.9 C.11 D.15答案 C解析 程序功能是每次将 a[i]与 m 中的较小值累加到变量 sum1 中,因此 sum1=3+3+2+2+1=11。11.用Python程序处理图像文件“chenchen.jpg”,该图像颜色位深度为24bit,图像如图所示,程序代码如下:#导入PIL、np和matplotlib.pyplot库,代码略img=np.array(Image.open("chenchen.jpg").convert("L"))rows,cols=img.shapefor i in range(rows): for j in range(cols): if (img[i,j]>128): img[i,j]=1 else: img[i,j]=0plt.imshow(img,cmap="gray")plt.show()下列说法正确的是 ( )A.待处理图像的文件名为"chenchen"B.处理后的图像像素数将增加C.将加框处语句中的“>”改为“<=”,则处理后的图像中黑白色将互换D.将加框处语句中 128 改为 188,则处理后图像中的黑色部分将减少答案 C12.某Python程序如下:s=[3,3,3,6,6,8,11,11,9,4,2,5]r=[]for i in range(1,len(s)-1): if not(s[i-1]s[i]>s[i+1]): if s[i-1]==s[i]: continue j=len(r)-1 while j>=0 and s[i]<=s[r[j]]: j-=1 if j==len(r)-1 or j==-1: j+=1 r=r[:j]+[i]+r[j:]print(r)程序运行后,输出的结果为 ( )A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]答案 D二、非选择题(本大题共4个小题,共26分)13.数据在网络传输中,带宽是宝贵的资源,通过压缩传输的字符串,可以减少数据量,从而加快传输速度,节省带宽资源。现有一种字符压缩方法描述如下:对于连续的若干个相同的子串“X”会压缩为“[DX]”的形式(D是一个整数且1≤D≤99),如字符串“ABABABAB”就压缩为“[4AB]”或者“[2[2AB]]”,类似于后面这种压缩之后再压缩的称为二重压缩。如果是“[2[2[2AB]]]”则是三重的。现给出一串压缩后的结果,并对其进行解压缩。思路:先找出每个左括号的位置,然后从后往前枚举,找出每一个括号内要解压的子串以及要解压的次数,将子串解压后得到一个新串,重复操作,得到最终的解压缩结果。例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。(1)已知采用上述压缩方法得到的压缩结果是“[2Z[2DB]]”,则解压缩结果为 。 (2)根据上述描述,小明利用 Python 设计了一个解压缩程序,请在划线处填入合适的代码。start = []s=input("请输入压缩结果:")for i in range(len(s)): if s[i]=="[": start.append(i)for i in range(len(start)-1,-1,-1): num=0;temp=" " ① while j if "0"<=s[j]<="9": num=num*10+int(s[j]) else: ② j+=1 ans=num*temp s=s[:start[i]]+③ #重新构造字符串 print("解压结果为:"+s)答案 (1)ZDBDBZDBDB (2)①j=start[i]+1 ②temp+=s[j] ③ans +s[j+1:]14.腾讯通过 QQ 等级来衡量用户的活跃情况。QQ 等级计算规则如下:①用户当天在线两个小时,记为活跃 1 天;半小时及以上、两小时以下则记为活跃 0.5 天。②根据累计活跃天数对应不同 QQ 等级,如表所示,0 级至 1 级需活跃 5 天,1 级至 2 级需活跃7天,依此类推。③每升1级,用户可以获取1个△,4 个△兑换1个◇,4个◇兑换1个○,4 个○兑换 1个☆。级别 图标 累计活跃天数0级 0天1级 △ 5天2级 △△ 12天3级 △△△ 21天4级 ◇ 32天5级 ◇△ 45天(1)小张的 QQ 等级图标为○◇◇◇△△,则小张 QQ 等级的级别是 。 (2)“log.txt”文件中逐行记录了某位用户每天的在线时长(以小时为单位),编程实现读取文件内容并计算,按☆○◇△的顺序输出用户的 QQ 等级图标,请在划线处填入合适的代码。f=open('log.txt')data=[]active=0icon=["☆","○","◇","△"]#逐行读取'log.txt'文件中的数据,依次添加到 data 列表中,如data=[1.9, 2.3,11.5,3.1,2.8,5.2……]代码略#计算用户的活跃天数for i in range(len(data)): if data[i] >= 2: active+=1 elif data[i]>=0.5: ① #计算用户等级base=5level=0while active >=base: level+=1 ② base = base + 2#将等级换算为图标s = " "while level !=0: r = level % 4 s = str(r) + s ③ n=len(s)ans=" " start=4-nfor i in range(n): ans +=④ print(ans)答案 (1)30 (2) ①active+=0.5②active=active-base ③level=level∥4④icon[start+i]*int(s[i])15.每个人进、出馆的时间用一个长度为11的字符串表示,例如“08:05-08:45”表示进馆时间为8点05分,出馆时间为8点45分。现要求统计当天馆内人数超过指定人数的总时长,当天在馆人数最多时刻及在馆人数。(1)8点01分到8点08分的进出馆人数如下表所示:分钟 01 02 03 04 05 06 07 08进馆人数 5 0 4 2 1 3 1 2出馆人数 0 1 1 1 6 3 2 2在馆人数最多时刻为 。 (2)每个参观者进入场馆和出馆时间保存在“参观记录.txt”文件中,编写Python程序,请将程序补充完整。rs=[0]*540 #存储早上8点至下午5点每分钟的在馆人数f=open("参观记录.txt",encoding="utf-8")n=0for sj in f : m1=int(sj[:2])*60+int(sj[3:5])-480#将入馆时间转换为上午8点以后的分钟数 m2=int(sj[6:8])*60+int(sj[9:11])-480 rs[m1]+=1 ① sp =int(input("请输入指定人数:"))totrs=imax=sumrs=0itime=""for i in range(540): ② if totrs>sp: ③ if totrs>imax: imax=totrs itime=str(i∥60+8)+":"+str(④ ) print("超过指定人数的总时长:" + str(sumrs) + "分钟")print("在馆人数最多时刻为:" + itime + ",共" + str(imax) + "人")答案 (1)8 (2)①rs[m2]-=1②totrs+= rs[i] ③sumrs+=1 ④i%6016.挖金矿游戏。在一个8行8列的矩阵中,矿工位于第1行第1列的格子,n个金矿随机分布在第1行下面的各个格子中,每个金矿的横坐标依次保存在x数组,纵坐标保存在y数组。矿工收集金矿方法:先确定每行最左边和最右边金矿的坐标,对于同一行的金矿,矿工先移动到最左边金矿正上方,再执行向下x步的指令进行挖矿,接着从该行左边第2个金矿开始一直挖到最右边。该行完成后,再依次挖下方各行的金矿。下图a所示的金矿(图中黑色方块)分布图,按右侧所示的指令,可以收集全部金矿。(1)现有4*4的金矿分布图如图b所示,矿工在左上角位置,写出矿工按规则获得所有金矿的指令(指令之间用逗号或空格隔开) 。 (2)编写程序,按顺序输出指令,使矿工按照规则得到所有金矿,将空白处填写完整。x=[2,2,5,5,5,8] #各金矿行号,从小到大升序排列y=[1,2,4,5,8,6] #各金矿列号,同一行金矿,列号从小到大升序排列n=len(x) #金矿数量px=py=1 #矿工初始位置行号和列号i=0while i beg=i while i i+=1 if y[beg] print("左"+str(py-y[beg])) elif y[beg]>py: print("右"+str(① )) print("下"+str(x[beg]-px)) print("挖矿") for k in range(② ): print("右"+str(y[k]-y[k-1])) print("挖矿") px=x[beg] ③ i+=1答案 (1)下1 挖矿 下2 挖矿 右3 挖矿 或下1,挖矿,下2,挖矿,右3,挖矿(2)①y[beg]-py ②beg+1,i+1 ③py=y[i]验收卷(三) 算法的程序实现(考试时间40分钟;满分50分)一、选择题(本大题共12小题,每小题2分,共24分,在每小题给出的四个选项中,只有一个符合题目要求,多选、少选、不选均不得分)1.Python 表达式 int(19/4)-25%3**2 的值是( )A.-3 B.-2C.2 D.32.下列 Python 表达式中,值为 True 的是 ( )A."ac" in "abcabc" B.9/3**2!=1C.abs(-4.3)>9∥2 D."12"=="123456"[1:3]3.下列Python表达式中,值为True的是 ( )A.2**3==64**0.5B.985>211 and not "book"<"pen"C."Chat" in "chatGPT"D.len("Python")>64.下列表达式的结果为 True 的是 ( )A.not "a" in "apple"B. 2023%1000∥4==23C. "t" in ["tomato","bear","banana"]D. "abc"*2>="abca"5.已知字典rec中存储着某超市部分水果的类别编码,其值为rec={"01":"苹果","02":"人参果 ","03":"阳光玫瑰葡萄","04":"红心火龙果","05":"果冻橙"},现要在字典rec中增加一个键为 "06",值为"甜蜜柚"的元素,下列Python语句能实现的是 ( )A.rec[06]="甜蜜柚"B. rec["06"]="甜蜜柚"C. rec["06"]={"甜蜜柚"}D. rec["06"]="06":"甜蜜柚"6.普通车辆高速公路超速罚款规则如下:(1)超过规定时速10%(含10%)以内,暂不处罚;(2)超过规定时速10%以上未达50%(含50%)的,处以200元罚款;(3)超过规定时速50%以上的,处以 2000元罚款。若用变量v表示高速公路规定时速,变量vt表示车辆行驶时速,变量k表示车辆的罚款,则下列程序段无法正常实现车辆行驶时速vt和罚款k之间关系的是 ( )A.if vt<=v*1.1: k=0 elif vt<=v*1.5: k=200 else: k=2000B.if v*1.1 k=200 else: k=0 if vt>v*1.5: k=2000C.k=0 if vt>v*1.1: k=200 elif vt>v*1.5: k=2000D.k=2000 if vt<=v*1.1: k=0 elif vt <=v*1.5: k=2007.根据国家标准,室内空气质量指数的正常范围为0.5~2.5,如果空气质量指数大于2.5,则表明空气质量较差,空气质量指数小于0.5,表明空气质量较好,下列选项能正确表示这三种情况的是( )A.if zs>2.5: print("较差") elif 0.5 print("正常") else: print("较好")B.if 2.5>zs>0.5: print("正常") elif zs<0.5: print("较好") else: print("较差")C.if zs>2.5: print("较差") elif not zs>0.5: print("较好") else: print("正常")D.if zs<0.5: print("较好") elif not zs>2.5: print("正常") elif zs>2.5: print("较差")8.有如下 Python 程序:s="abcdefghijk";res=0for i in range(1,len(s),2): res+=ord(s[i])-ord(s[i-1])print(res)运行该程序,输出的结果是( )A.5 B.6 C.9 D.109.“回文串”是一个正读和反读都一样的字符串。下列Python段的功能是:输入一个字符串,判断该字符串是否为回文串,若是则输出“Yes”,否则输出“No”。s=input("请输入字符串:")i=0j=len(s)-1flag=Truewhile i if s[i]==s[j]: i+=1 ① else: flag=Falseif ② : print("Yes")else: print("No")则程序划线①②③处应填入的语句为( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1 ②flag D.①j-=1 ②not flag10.有如下Python程序段:a=[3,5,2,4,1]sum1=m=a[0]for i in range(1,len(a)): if a[i] m=a[i] sum1+=m执行该程序后,sum1的值为( )A.6 B.9 C.11 D.1511.用Python程序处理图像文件“chenchen.jpg”,该图像颜色位深度为24bit,图像如图所示,程序代码如下:#导入PIL、np和matplotlib.pyplot库,代码略img=np.array(Image.open("chenchen.jpg").convert("L"))rows,cols=img.shapefor i in range(rows): for j in range(cols): if (img[i,j]>128): img[i,j]=1 else: img[i,j]=0plt.imshow(img,cmap="gray")plt.show()下列说法正确的是( )A.待处理图像的文件名为"chenchen"B.处理后的图像像素数将增加C.将加框处语句中的“>”改为“<=”,则处理后的图像中黑白色将互换D.将加框处语句中 128 改为 188,则处理后图像中的黑色部分将减少12.某Python程序如下:s=[3,3,3,6,6,8,11,11,9,4,2,5]r=[]for i in range(1,len(s)-1): if not(s[i-1]s[i]>s[i+1]): if s[i-1]==s[i]: continue j=len(r)-1 while j>=0 and s[i]<=s[r[j]]: j-=1 if j==len(r)-1 or j==-1: j+=1 r=r[:j]+[i]+r[j:]print(r)程序运行后,输出的结果为( )A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]二、非选择题(本大题共4个小题,共26分)13.数据在网络传输中,带宽是宝贵的资源,通过压缩传输的字符串,可以减少数据量,从而加快传输速度,节省带宽资源。现有一种字符压缩方法描述如下:对于连续的若干个相同的子串“X”会压缩为“[DX]”的形式(D是一个整数且1≤D≤99),如字符串“ABABABAB”就压缩为“[4AB]”或者“[2[2AB]]”,类似于后面这种压缩之后再压缩的称为二重压缩。如果是“[2[2[2AB]]]”则是三重的。现给出一串压缩后的结果,并对其进行解压缩。思路:先找出每个左括号的位置,然后从后往前枚举,找出每一个括号内要解压的子串以及要解压的次数,将子串解压后得到一个新串,重复操作,得到最终的解压缩结果。例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。(1)已知采用上述压缩方法得到的压缩结果是“[2Z[2DB]]”,则解压缩结果为 。 (2)根据上述描述,小明利用 Python 设计了一个解压缩程序,请在划线处填入合适的代码。start = []s=input("请输入压缩结果:")for i in range(len(s)): if s[i]=="[": start.append(i)for i in range(len(start)-1,-1,-1): num=0;temp=" " ① while j if "0"<=s[j]<="9": num=num*10+int(s[j]) else: ② j+=1 ans=num*temp s=s[:start[i]]+③ #重新构造字符串 print("解压结果为:"+s)14.腾讯通过 QQ 等级来衡量用户的活跃情况。QQ 等级计算规则如下:①用户当天在线两个小时,记为活跃 1 天;半小时及以上、两小时以下则记为活跃 0.5 天。②根据累计活跃天数对应不同 QQ 等级,如表所示,0 级至 1 级需活跃 5 天,1 级至 2 级需活跃7天,依此类推。③每升1级,用户可以获取1个△,4 个△兑换1个◇,4个◇兑换1个○,4 个○兑换 1个☆。级别 图标 累计活跃天数0级 0天1级 △ 5天2级 △△ 12天3级 △△△ 21天4级 ◇ 32天5级 ◇△ 45天(1)小张的 QQ 等级图标为○◇◇◇△△,则小张 QQ 等级的级别是 。 (2)“log.txt”文件中逐行记录了某位用户每天的在线时长(以小时为单位),编程实现读取文件内容并计算,按☆○◇△的顺序输出用户的 QQ 等级图标,请在划线处填入合适的代码。f=open('log.txt')data=[]active=0icon=["☆","○","◇","△"]#逐行读取'log.txt'文件中的数据,依次添加到 data 列表中,如data=[1.9, 2.3,11.5,3.1,2.8,5.2……]代码略#计算用户的活跃天数for i in range(len(data)): if data[i] >= 2: active+=1 elif data[i]>=0.5: ① #计算用户等级base=5level=0while active >=base: level+=1 ② base = base + 2#将等级换算为图标s = " "while level !=0: r = level % 4 s = str(r) + s ③ n=len(s)ans=" " start=4-nfor i in range(n): ans +=④ print(ans)15.每个人进、出馆的时间用一个长度为11的字符串表示,例如“08:05-08:45”表示进馆时间为8点05分,出馆时间为8点45分。现要求统计当天馆内人数超过指定人数的总时长,当天在馆人数最多时刻及在馆人数。(1)8点01分到8点08分的进出馆人数如下表所示:分钟 01 02 03 04 05 06 07 08进馆人数 5 0 4 2 1 3 1 2出馆人数 0 1 1 1 6 3 2 2在馆人数最多时刻为 。 (2)每个参观者进入场馆和出馆时间保存在“参观记录.txt”文件中,编写Python程序,请将程序补充完整。rs=[0]*540 #存储早上8点至下午5点每分钟的在馆人数f=open("参观记录.txt",encoding="utf-8")n=0for sj in f : m1=int(sj[:2])*60+int(sj[3:5])-480#将入馆时间转换为上午8点以后的分钟数 m2=int(sj[6:8])*60+int(sj[9:11])-480 rs[m1]+=1 ① sp =int(input("请输入指定人数:"))totrs=imax=sumrs=0itime=""for i in range(540): ② if totrs>sp: ③ if totrs>imax: imax=totrs itime=str(i∥60+8)+":"+str(④ ) print("超过指定人数的总时长:" + str(sumrs) + "分钟")print("在馆人数最多时刻为:" + itime + ",共" + str(imax) + "人")16.挖金矿游戏。在一个8行8列的矩阵中,矿工位于第1行第1列的格子,n个金矿随机分布在第1行下面的各个格子中,每个金矿的横坐标依次保存在x数组,纵坐标保存在y数组。矿工收集金矿方法:先确定每行最左边和最右边金矿的坐标,对于同一行的金矿,矿工先移动到最左边金矿正上方,再执行向下x步的指令进行挖矿,接着从该行左边第2个金矿开始一直挖到最右边。该行完成后,再依次挖下方各行的金矿。下图a所示的金矿(图中黑色方块)分布图,按右侧所示的指令,可以收集全部金矿。(1)现有4*4的金矿分布图如图b所示,矿工在左上角位置,写出矿工按规则获得所有金矿的指令(指令之间用逗号或空格隔开) 。 (2)编写程序,按顺序输出指令,使矿工按照规则得到所有金矿,将空白处填写完整。x=[2,2,5,5,5,8] #各金矿行号,从小到大升序排列y=[1,2,4,5,8,6] #各金矿列号,同一行金矿,列号从小到大升序排列n=len(x) #金矿数量px=py=1 #矿工初始位置行号和列号i=0while i beg=i while i i+=1 if y[beg] print("左"+str(py-y[beg])) elif y[beg]>py: print("右"+str(① )) print("下"+str(x[beg]-px)) print("挖矿") for k in range(② ): print("右"+str(y[k]-y[k-1])) print("挖矿") px=x[beg] ③ i+=1 展开更多...... 收起↑ 资源列表 验收卷(三) 算法的程序实现 课件(共36张ppt)浙教版(2019)必修1.pptx 验收卷(三) 算法的程序实现(含答案)浙教版(2019)必修1.doc 验收卷(三) 算法的程序实现(学生版)浙教版(2019)必修1.doc