資源簡(jiǎn)介 (共36張PPT)驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)第三章 算法的程序?qū)崿F(xiàn)(考試時(shí)間40分鐘;滿分50分)一、選擇題(本大題共12小題,每小題2分,共24分,在每小題給出的四個(gè)選項(xiàng)中,只有一個(gè)符合題目要求,多選、少選、不選均不得分)1.Python 表達(dá)式 int(19/4)-25%3**2 的值是( )A.-3 B.-2 C.2 D.3A2.下列 Python 表達(dá)式中,值為 True 的是 ( )A."ac" in "abcabc"B.9/3**2!=1C.abs(-4.3)>9∥2D."12"=="123456"[1:3]C3.下列Python表達(dá)式中,值為True的是 ( )A.2**3==64**0.5B.985>211 and not "book"<"pen"C."Chat" in "chatGPT"D.len("Python")>6A4.下列表達(dá)式的結(jié)果為 True 的是 ( )A.not "a" in "apple"B. 2023%1000∥4==23C. "t" in ["tomato","bear","banana"]D. "abc"*2>="abca"D5.已知字典rec中存儲(chǔ)著某超市部分水果的類別編碼,其值為rec={"01":"蘋果","02":"人參果 ","03":"陽(yáng)光玫瑰葡萄","04":"紅心火龍果","05":"果凍橙"},現(xiàn)要在字典rec中增加一個(gè)鍵為 "06",值為"甜蜜柚"的元素,下列Python語(yǔ)句能實(shí)現(xiàn)的是 ( )A.rec[06]="甜蜜柚"B. rec["06"]="甜蜜柚"C. rec["06"]={"甜蜜柚"}D. rec["06"]="06":"甜蜜柚"B6.普通車輛高速公路超速罰款規(guī)則如下:(1)超過規(guī)定時(shí)速10%(含10%)以內(nèi),暫不處罰;(2)超過規(guī)定時(shí)速10%以上未達(dá)50%(含50%)的,處以200元罰款;(3)超過規(guī)定時(shí)速50%以上的,處以 2000元罰款。若用變量v表示高速公路規(guī)定時(shí)速,變量vt表示車輛行駛時(shí)速,變量k表示車輛的罰款,則下列程序段無(wú)法正常實(shí)現(xiàn)車輛行駛時(shí)速vt和罰款k之間關(guān)系的是 ( )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.根據(jù)國(guó)家標(biāo)準(zhǔn),室內(nèi)空氣質(zhì)量指數(shù)的正常范圍為0.5~2.5,如果空氣質(zhì)量指數(shù)大于2.5,則表明空氣質(zhì)量較差,空氣質(zhì)量指數(shù)小于0.5,表明空氣質(zhì)量較好,下列選項(xiàng)能正確表示這三種情況的是 ( )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選項(xiàng)elif 條件應(yīng)為0.5<=zs<=2.5;B 選項(xiàng)if 條件應(yīng)為2.5>=zs>=0.5;C 選項(xiàng)中,elif 中條件應(yīng)為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)運(yùn)行該程序,輸出的結(jié)果是( ) A.5 B.6 C.9 D.10解析 每2個(gè)字母一組,后一個(gè)與前一個(gè)字母的ASCII碼的差值,共有5組。A9.“回文串”是一個(gè)正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個(gè)字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。s=input("請(qǐng)輸入字符串:")i=0j=len(s)-1flag=Truewhile i if s[i]==s[j]: i+=1 ① else: flag=Falseif ② : print("Yes")else: print("No")則程序劃線①②③處應(yīng)填入的語(yǔ)句為( )A.①j+=1?、趂lag B.①j+=1 ②not flagC.①j-=1?、趂lag D.①j-=1 ②not flagC解析 本題程序的功能是判斷字符串是否為回文串。本題采用雙指針的方法來判斷頭尾一對(duì)字符,變量 i指向字符串的頭部,j 指向字符串的尾部。因此①處代碼為 j-=1 或 j=j-1,最后根據(jù)邏輯變量 flag 的值來判斷是否為回文串,當(dāng) s[i]!=s[j]時(shí),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執(zhí)行該程序后,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ái)?shù)將增加C.將加框處語(yǔ)句中的“>”改為“<=”,則處理后的圖像中黑白色將互換D.將加框處語(yǔ)句中 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)程序運(yùn)行后,輸出的結(jié)果為( )A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]D二、非選擇題(本大題共4個(gè)小題,共26分)13.數(shù)據(jù)在網(wǎng)絡(luò)傳輸中,帶寬是寶貴的資源,通過壓縮傳輸?shù)淖址?可以減少數(shù)據(jù)量,從而加快傳輸速度,節(jié)省帶寬資源?,F(xiàn)有一種字符壓縮方法描述如下:對(duì)于連續(xù)的若干個(gè)相同的子串“X”會(huì)壓縮為“[DX]”的形式(D是一個(gè)整數(shù)且1≤D≤99),如字符串“ABABABAB”就壓縮為“[4AB]”或者“[2[2AB]]”,類似于后面這種壓縮之后再壓縮的稱為二重壓縮。如果是“[2[2[2AB]]]”則是三重的。現(xiàn)給出一串壓縮后的結(jié)果,并對(duì)其進(jìn)行解壓縮。思路:先找出每個(gè)左括號(hào)的位置,然后從后往前枚舉,找出每一個(gè)括號(hào)內(nèi)要解壓的子串以及要解壓的次數(shù),將子串解壓后得到一個(gè)新串,重復(fù)操作,得到最終的解壓縮結(jié)果。例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。(1)已知采用上述壓縮方法得到的壓縮結(jié)果是“[2Z[2DB]]”,則解壓縮結(jié)果為 。 (2)根據(jù)上述描述,小明利用 Python 設(shè)計(jì)了一個(gè)解壓縮程序,請(qǐng)?jiān)趧澗€處填入合適的代碼。start = []s=input("請(qǐng)輸入壓縮結(jié)果:")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]]+③ #重新構(gòu)造字符串 print("解壓結(jié)果為:"+s)答案 (1)ZDBDBZDBDB (2)①j=start[i]+1?、趖emp+=s[j]?、踑ns +s[j+1:]14.騰訊通過 QQ 等級(jí)來衡量用戶的活躍情況。QQ 等級(jí)計(jì)算規(guī)則如下:①用戶當(dāng)天在線兩個(gè)小時(shí),記為活躍 1 天;半小時(shí)及以上、兩小時(shí)以下則記為活躍 0.5 天。②根據(jù)累計(jì)活躍天數(shù)對(duì)應(yīng)不同 QQ 等級(jí),如表所示,0 級(jí)至 1 級(jí)需活躍 5 天,1 級(jí)至 2 級(jí)需活躍7天,依此類推。③每升1級(jí),用戶可以獲取1個(gè)△,4 個(gè)△兌換1個(gè)◇,4個(gè)◇兌換1個(gè)○,4 個(gè)○兌換 1個(gè)☆。級(jí)別 圖標(biāo) 累計(jì)活躍天數(shù)0級(jí) 0天1級(jí) △ 5天2級(jí) △△ 12天3級(jí) △△△ 21天4級(jí) ◇ 32天5級(jí) ◇△ 45天(1)小張的 QQ 等級(jí)圖標(biāo)為○◇◇◇△△,則小張 QQ 等級(jí)的級(jí)別是 。 (2)“l(fā)og.txt”文件中逐行記錄了某位用戶每天的在線時(shí)長(zhǎng)(以小時(shí)為單位),編程實(shí)現(xiàn)讀取文件內(nèi)容并計(jì)算,按☆○◇△的順序輸出用戶的 QQ 等級(jí)圖標(biāo),請(qǐng)?jiān)趧澗€處填入合適的代碼。f=open('log.txt')data=[]active=0icon=["☆","○","◇","△"]#逐行讀取'log.txt'文件中的數(shù)據(jù),依次添加到 data 列表中,如data=[1.9,2.3,11.5,3.1,2.8,5.2……]代碼略#計(jì)算用戶的活躍天數(shù)for i in range(len(data)): if data[i] >= 2: active+=1 elif data[i]>=0.5: ① #計(jì)算用戶等級(jí)base=5level=0while active >=base: level+=1 ?、凇 ? base = base + 2#將等級(jí)換算為圖標(biāo)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?、踠evel=level∥4④icon[start+i]*int(s[i])15.每個(gè)人進(jìn)、出館的時(shí)間用一個(gè)長(zhǎng)度為11的字符串表示,例如“08:05-08:45”表示進(jìn)館時(shí)間為8點(diǎn)05分,出館時(shí)間為8點(diǎn)45分?,F(xiàn)要求統(tǒng)計(jì)當(dāng)天館內(nèi)人數(shù)超過指定人數(shù)的總時(shí)長(zhǎng),當(dāng)天在館人數(shù)最多時(shí)刻及在館人數(shù)。(1)8點(diǎn)01分到8點(diǎn)08分的進(jìn)出館人數(shù)如下表所示:分鐘 01 02 03 04 05 06 07 08進(jìn)館人數(shù) 5 0 4 2 1 3 1 2出館人數(shù) 0 1 1 1 6 3 2 2在館人數(shù)最多時(shí)刻為 。 (2)每個(gè)參觀者進(jìn)入場(chǎng)館和出館時(shí)間保存在“參觀記錄.txt”文件中,編寫Python程序,請(qǐng)將程序補(bǔ)充完整。rs=[0]*540 #存儲(chǔ)早上8點(diǎn)至下午5點(diǎn)每分鐘的在館人數(shù)f=open("參觀記錄.txt",encoding="utf-8")n=0for sj in f : m1=int(sj[:2])*60+int(sj[3:5])-480#將入館時(shí)間轉(zhuǎn)換為上午8點(diǎn)以后的分鐘數(shù) m2=int(sj[6:8])*60+int(sj[9:11])-480 rs[m1]+=1 ?、佟 ?sp =int(input("請(qǐng)輸入指定人數(shù):"))totrs=imax=sumrs=0itime=""for i in range(540): ② if totrs>sp: ?、邸 ? if totrs>imax: imax=totrs itime=str(i∥60+8)+":"+str(④ ) print("超過指定人數(shù)的總時(shí)長(zhǎng):" + str(sumrs) + "分鐘")print("在館人數(shù)最多時(shí)刻為:" + itime + ",共" + str(imax) + "人")答案 (1)8 (2)①rs[m2]-=1②totrs+= rs[i]?、踫umrs+=1 ④i%6016.挖金礦游戲。在一個(gè)8行8列的矩陣中,礦工位于第1行第1列的格子,n個(gè)金礦隨機(jī)分布在第1行下面的各個(gè)格子中,每個(gè)金礦的橫坐標(biāo)依次保存在x數(shù)組,縱坐標(biāo)保存在y數(shù)組。礦工收集金礦方法:先確定每行最左邊和最右邊金礦的坐標(biāo),對(duì)于同一行的金礦,礦工先移動(dòng)到最左邊金礦正上方,再執(zhí)行向下x步的指令進(jìn)行挖礦,接著從該行左邊第2個(gè)金礦開始一直挖到最右邊。該行完成后,再依次挖下方各行的金礦。下圖a所示的金礦(圖中黑色方塊)分布圖,按右側(cè)所示的指令,可以收集全部金礦。(1)現(xiàn)有4*4的金礦分布圖如圖b所示,礦工在左上角位置,寫出礦工按規(guī)則獲得所有金礦的指令(指令之間用逗號(hào)或空格隔開) 。 (2)編寫程序,按順序輸出指令,使礦工按照規(guī)則得到所有金礦,將空白處填寫完整。x=[2,2,5,5,5,8] #各金礦行號(hào),從小到大升序排列y=[1,2,4,5,8,6] #各金礦列號(hào),同一行金礦,列號(hào)從小到大升序排列n=len(x) #金礦數(shù)量px=py=1 #礦工初始位置行號(hào)和列號(hào)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?、赽eg+1,i+1 ③py=y[i]驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)(考試時(shí)間40分鐘;滿分50分)一、選擇題(本大題共12小題,每小題2分,共24分,在每小題給出的四個(gè)選項(xiàng)中,只有一個(gè)符合題目要求,多選、少選、不選均不得分)1.Python 表達(dá)式 int(19/4)-25%3**2 的值是 ( )A.-3 B.-2 C.2 D.3答案 A2.下列 Python 表達(dá)式中,值為 True 的是 ( )A."ac" in "abcabc"B.9/3**2!=1C.abs(-4.3)>9∥2D."12"=="123456"[1:3]答案 C3.下列Python表達(dá)式中,值為True的是 ( )A.2**3==64**0.5B.985>211 and not "book"<"pen"C."Chat" in "chatGPT"D.len("Python")>6答案 A4.下列表達(dá)式的結(jié)果為 True 的是 ( )A.not "a" in "apple"B. 2023%1000∥4==23C. "t" in ["tomato","bear","banana"]D. "abc"*2>="abca"答案 D5.已知字典rec中存儲(chǔ)著某超市部分水果的類別編碼,其值為rec={"01":"蘋果","02":"人參果 ","03":"陽(yáng)光玫瑰葡萄","04":"紅心火龍果","05":"果凍橙"},現(xiàn)要在字典rec中增加一個(gè)鍵為 "06",值為"甜蜜柚"的元素,下列Python語(yǔ)句能實(shí)現(xiàn)的是 ( )A.rec[06]="甜蜜柚"B. rec["06"]="甜蜜柚"C. rec["06"]={"甜蜜柚"}D. rec["06"]="06":"甜蜜柚"答案 B6.普通車輛高速公路超速罰款規(guī)則如下:(1)超過規(guī)定時(shí)速10%(含10%)以內(nèi),暫不處罰;(2)超過規(guī)定時(shí)速10%以上未達(dá)50%(含50%)的,處以200元罰款;(3)超過規(guī)定時(shí)速50%以上的,處以 2000元罰款。若用變量v表示高速公路規(guī)定時(shí)速,變量vt表示車輛行駛時(shí)速,變量k表示車輛的罰款,則下列程序段無(wú)法正常實(shí)現(xiàn)車輛行駛時(shí)速vt和罰款k之間關(guān)系的是 ( )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.根據(jù)國(guó)家標(biāo)準(zhǔn),室內(nèi)空氣質(zhì)量指數(shù)的正常范圍為0.5~2.5,如果空氣質(zhì)量指數(shù)大于2.5,則表明空氣質(zhì)量較差,空氣質(zhì)量指數(shù)小于0.5,表明空氣質(zhì)量較好,下列選項(xiàng)能正確表示這三種情況的是 ( )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選項(xiàng)elif 條件應(yīng)為0.5<=zs<=2.5;B 選項(xiàng)if 條件應(yīng)為2.5>=zs>=0.5;C 選項(xiàng)中,elif 中條件應(yīng)為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個(gè)字母一組,后一個(gè)與前一個(gè)字母的ASCII碼的差值,共有5組。9.“回文串”是一個(gè)正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個(gè)字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。s=input("請(qǐng)輸入字符串:")i=0j=len(s)-1flag=Truewhile i if s[i]==s[j]: i+=1 ?、佟 ? else: flag=Falseif ② : print("Yes")else: print("No")則程序劃線①②③處應(yīng)填入的語(yǔ)句為 ( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1 ②flag D.①j-=1 ②not flag答案 C解析 本題程序的功能是判斷字符串是否為回文串。本題采用雙指針的方法來判斷頭尾一對(duì)字符,變量 i指向字符串的頭部,j 指向字符串的尾部。因此①處代碼為 j-=1 或 j=j-1,最后根據(jù)邏輯變量 flag 的值來判斷是否為回文串,當(dāng) s[i]!=s[j]時(shí),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執(zhí)行該程序后,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,圖像如圖所示,程序代碼如下:#導(dǎo)入PIL、np和matplotlib.pyplot庫(kù),代碼略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ái)?shù)將增加C.將加框處語(yǔ)句中的“>”改為“<=”,則處理后的圖像中黑白色將互換D.將加框處語(yǔ)句中 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)程序運(yùn)行后,輸出的結(jié)果為 ( )A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]答案 D二、非選擇題(本大題共4個(gè)小題,共26分)13.數(shù)據(jù)在網(wǎng)絡(luò)傳輸中,帶寬是寶貴的資源,通過壓縮傳輸?shù)淖址?可以減少數(shù)據(jù)量,從而加快傳輸速度,節(jié)省帶寬資源。現(xiàn)有一種字符壓縮方法描述如下:對(duì)于連續(xù)的若干個(gè)相同的子串“X”會(huì)壓縮為“[DX]”的形式(D是一個(gè)整數(shù)且1≤D≤99),如字符串“ABABABAB”就壓縮為“[4AB]”或者“[2[2AB]]”,類似于后面這種壓縮之后再壓縮的稱為二重壓縮。如果是“[2[2[2AB]]]”則是三重的?,F(xiàn)給出一串壓縮后的結(jié)果,并對(duì)其進(jìn)行解壓縮。思路:先找出每個(gè)左括號(hào)的位置,然后從后往前枚舉,找出每一個(gè)括號(hào)內(nèi)要解壓的子串以及要解壓的次數(shù),將子串解壓后得到一個(gè)新串,重復(fù)操作,得到最終的解壓縮結(jié)果。例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。(1)已知采用上述壓縮方法得到的壓縮結(jié)果是“[2Z[2DB]]”,則解壓縮結(jié)果為 。 (2)根據(jù)上述描述,小明利用 Python 設(shè)計(jì)了一個(gè)解壓縮程序,請(qǐng)?jiān)趧澗€處填入合適的代碼。start = []s=input("請(qǐng)輸入壓縮結(jié)果:")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]]+③ #重新構(gòu)造字符串 print("解壓結(jié)果為:"+s)答案 (1)ZDBDBZDBDB (2)①j=start[i]+1?、趖emp+=s[j]?、踑ns +s[j+1:]14.騰訊通過 QQ 等級(jí)來衡量用戶的活躍情況。QQ 等級(jí)計(jì)算規(guī)則如下:①用戶當(dāng)天在線兩個(gè)小時(shí),記為活躍 1 天;半小時(shí)及以上、兩小時(shí)以下則記為活躍 0.5 天。②根據(jù)累計(jì)活躍天數(shù)對(duì)應(yīng)不同 QQ 等級(jí),如表所示,0 級(jí)至 1 級(jí)需活躍 5 天,1 級(jí)至 2 級(jí)需活躍7天,依此類推。③每升1級(jí),用戶可以獲取1個(gè)△,4 個(gè)△兌換1個(gè)◇,4個(gè)◇兌換1個(gè)○,4 個(gè)○兌換 1個(gè)☆。級(jí)別 圖標(biāo) 累計(jì)活躍天數(shù)0級(jí) 0天1級(jí) △ 5天2級(jí) △△ 12天3級(jí) △△△ 21天4級(jí) ◇ 32天5級(jí) ◇△ 45天(1)小張的 QQ 等級(jí)圖標(biāo)為○◇◇◇△△,則小張 QQ 等級(jí)的級(jí)別是 。 (2)“l(fā)og.txt”文件中逐行記錄了某位用戶每天的在線時(shí)長(zhǎng)(以小時(shí)為單位),編程實(shí)現(xiàn)讀取文件內(nèi)容并計(jì)算,按☆○◇△的順序輸出用戶的 QQ 等級(jí)圖標(biāo),請(qǐng)?jiān)趧澗€處填入合適的代碼。f=open('log.txt')data=[]active=0icon=["☆","○","◇","△"]#逐行讀取'log.txt'文件中的數(shù)據(jù),依次添加到 data 列表中,如data=[1.9, 2.3,11.5,3.1,2.8,5.2……]代碼略#計(jì)算用戶的活躍天數(shù)for i in range(len(data)): if data[i] >= 2: active+=1 elif data[i]>=0.5: ?、佟 ?#計(jì)算用戶等級(jí)base=5level=0while active >=base: level+=1 ?、凇 ? base = base + 2#將等級(jí)換算為圖標(biāo)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?、踠evel=level∥4④icon[start+i]*int(s[i])15.每個(gè)人進(jìn)、出館的時(shí)間用一個(gè)長(zhǎng)度為11的字符串表示,例如“08:05-08:45”表示進(jìn)館時(shí)間為8點(diǎn)05分,出館時(shí)間為8點(diǎn)45分。現(xiàn)要求統(tǒng)計(jì)當(dāng)天館內(nèi)人數(shù)超過指定人數(shù)的總時(shí)長(zhǎng),當(dāng)天在館人數(shù)最多時(shí)刻及在館人數(shù)。(1)8點(diǎn)01分到8點(diǎn)08分的進(jìn)出館人數(shù)如下表所示:分鐘 01 02 03 04 05 06 07 08進(jìn)館人數(shù) 5 0 4 2 1 3 1 2出館人數(shù) 0 1 1 1 6 3 2 2在館人數(shù)最多時(shí)刻為 。 (2)每個(gè)參觀者進(jìn)入場(chǎng)館和出館時(shí)間保存在“參觀記錄.txt”文件中,編寫Python程序,請(qǐng)將程序補(bǔ)充完整。rs=[0]*540 #存儲(chǔ)早上8點(diǎn)至下午5點(diǎn)每分鐘的在館人數(shù)f=open("參觀記錄.txt",encoding="utf-8")n=0for sj in f : m1=int(sj[:2])*60+int(sj[3:5])-480#將入館時(shí)間轉(zhuǎn)換為上午8點(diǎn)以后的分鐘數(shù) m2=int(sj[6:8])*60+int(sj[9:11])-480 rs[m1]+=1 ① sp =int(input("請(qǐng)輸入指定人數(shù):"))totrs=imax=sumrs=0itime=""for i in range(540): ② if totrs>sp: ③ if totrs>imax: imax=totrs itime=str(i∥60+8)+":"+str(④ ) print("超過指定人數(shù)的總時(shí)長(zhǎng):" + str(sumrs) + "分鐘")print("在館人數(shù)最多時(shí)刻為:" + itime + ",共" + str(imax) + "人")答案 (1)8 (2)①rs[m2]-=1②totrs+= rs[i] ③sumrs+=1?、躨%6016.挖金礦游戲。在一個(gè)8行8列的矩陣中,礦工位于第1行第1列的格子,n個(gè)金礦隨機(jī)分布在第1行下面的各個(gè)格子中,每個(gè)金礦的橫坐標(biāo)依次保存在x數(shù)組,縱坐標(biāo)保存在y數(shù)組。礦工收集金礦方法:先確定每行最左邊和最右邊金礦的坐標(biāo),對(duì)于同一行的金礦,礦工先移動(dòng)到最左邊金礦正上方,再執(zhí)行向下x步的指令進(jìn)行挖礦,接著從該行左邊第2個(gè)金礦開始一直挖到最右邊。該行完成后,再依次挖下方各行的金礦。下圖a所示的金礦(圖中黑色方塊)分布圖,按右側(cè)所示的指令,可以收集全部金礦。(1)現(xiàn)有4*4的金礦分布圖如圖b所示,礦工在左上角位置,寫出礦工按規(guī)則獲得所有金礦的指令(指令之間用逗號(hào)或空格隔開) 。 (2)編寫程序,按順序輸出指令,使礦工按照規(guī)則得到所有金礦,將空白處填寫完整。x=[2,2,5,5,5,8] #各金礦行號(hào),從小到大升序排列y=[1,2,4,5,8,6] #各金礦列號(hào),同一行金礦,列號(hào)從小到大升序排列n=len(x) #金礦數(shù)量px=py=1 #礦工初始位置行號(hào)和列號(hào)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?、赽eg+1,i+1?、踦y=y[i]驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)(考試時(shí)間40分鐘;滿分50分)一、選擇題(本大題共12小題,每小題2分,共24分,在每小題給出的四個(gè)選項(xiàng)中,只有一個(gè)符合題目要求,多選、少選、不選均不得分)1.Python 表達(dá)式 int(19/4)-25%3**2 的值是( )A.-3 B.-2C.2 D.32.下列 Python 表達(dá)式中,值為 True 的是 ( )A."ac" in "abcabc" B.9/3**2!=1C.abs(-4.3)>9∥2 D."12"=="123456"[1:3]3.下列Python表達(dá)式中,值為True的是 ( )A.2**3==64**0.5B.985>211 and not "book"<"pen"C."Chat" in "chatGPT"D.len("Python")>64.下列表達(dá)式的結(jié)果為 True 的是 ( )A.not "a" in "apple"B. 2023%1000∥4==23C. "t" in ["tomato","bear","banana"]D. "abc"*2>="abca"5.已知字典rec中存儲(chǔ)著某超市部分水果的類別編碼,其值為rec={"01":"蘋果","02":"人參果 ","03":"陽(yáng)光玫瑰葡萄","04":"紅心火龍果","05":"果凍橙"},現(xiàn)要在字典rec中增加一個(gè)鍵為 "06",值為"甜蜜柚"的元素,下列Python語(yǔ)句能實(shí)現(xiàn)的是 ( )A.rec[06]="甜蜜柚"B. rec["06"]="甜蜜柚"C. rec["06"]={"甜蜜柚"}D. rec["06"]="06":"甜蜜柚"6.普通車輛高速公路超速罰款規(guī)則如下:(1)超過規(guī)定時(shí)速10%(含10%)以內(nèi),暫不處罰;(2)超過規(guī)定時(shí)速10%以上未達(dá)50%(含50%)的,處以200元罰款;(3)超過規(guī)定時(shí)速50%以上的,處以 2000元罰款。若用變量v表示高速公路規(guī)定時(shí)速,變量vt表示車輛行駛時(shí)速,變量k表示車輛的罰款,則下列程序段無(wú)法正常實(shí)現(xiàn)車輛行駛時(shí)速vt和罰款k之間關(guān)系的是 ( )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.根據(jù)國(guó)家標(biāo)準(zhǔn),室內(nèi)空氣質(zhì)量指數(shù)的正常范圍為0.5~2.5,如果空氣質(zhì)量指數(shù)大于2.5,則表明空氣質(zhì)量較差,空氣質(zhì)量指數(shù)小于0.5,表明空氣質(zhì)量較好,下列選項(xiàng)能正確表示這三種情況的是( )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)運(yùn)行該程序,輸出的結(jié)果是( )A.5 B.6 C.9 D.109.“回文串”是一個(gè)正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個(gè)字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。s=input("請(qǐng)輸入字符串:")i=0j=len(s)-1flag=Truewhile i if s[i]==s[j]: i+=1 ?、佟 ? else: flag=Falseif ② : print("Yes")else: print("No")則程序劃線①②③處應(yīng)填入的語(yǔ)句為( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1?、趂lag 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執(zhí)行該程序后,sum1的值為( )A.6 B.9 C.11 D.1511.用Python程序處理圖像文件“chenchen.jpg”,該圖像顏色位深度為24bit,圖像如圖所示,程序代碼如下:#導(dǎo)入PIL、np和matplotlib.pyplot庫(kù),代碼略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ái)?shù)將增加C.將加框處語(yǔ)句中的“>”改為“<=”,則處理后的圖像中黑白色將互換D.將加框處語(yǔ)句中 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)程序運(yùn)行后,輸出的結(jié)果為( )A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]二、非選擇題(本大題共4個(gè)小題,共26分)13.數(shù)據(jù)在網(wǎng)絡(luò)傳輸中,帶寬是寶貴的資源,通過壓縮傳輸?shù)淖址?可以減少數(shù)據(jù)量,從而加快傳輸速度,節(jié)省帶寬資源?,F(xiàn)有一種字符壓縮方法描述如下:對(duì)于連續(xù)的若干個(gè)相同的子串“X”會(huì)壓縮為“[DX]”的形式(D是一個(gè)整數(shù)且1≤D≤99),如字符串“ABABABAB”就壓縮為“[4AB]”或者“[2[2AB]]”,類似于后面這種壓縮之后再壓縮的稱為二重壓縮。如果是“[2[2[2AB]]]”則是三重的?,F(xiàn)給出一串壓縮后的結(jié)果,并對(duì)其進(jìn)行解壓縮。思路:先找出每個(gè)左括號(hào)的位置,然后從后往前枚舉,找出每一個(gè)括號(hào)內(nèi)要解壓的子串以及要解壓的次數(shù),將子串解壓后得到一個(gè)新串,重復(fù)操作,得到最終的解壓縮結(jié)果。例如:[2[2[2AB]]]→[2[2ABAB]]→[2ABABABAB]→ABABABABABABABAB。(1)已知采用上述壓縮方法得到的壓縮結(jié)果是“[2Z[2DB]]”,則解壓縮結(jié)果為 。 (2)根據(jù)上述描述,小明利用 Python 設(shè)計(jì)了一個(gè)解壓縮程序,請(qǐng)?jiān)趧澗€處填入合適的代碼。start = []s=input("請(qǐng)輸入壓縮結(jié)果:")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]]+③ #重新構(gòu)造字符串 print("解壓結(jié)果為:"+s)14.騰訊通過 QQ 等級(jí)來衡量用戶的活躍情況。QQ 等級(jí)計(jì)算規(guī)則如下:①用戶當(dāng)天在線兩個(gè)小時(shí),記為活躍 1 天;半小時(shí)及以上、兩小時(shí)以下則記為活躍 0.5 天。②根據(jù)累計(jì)活躍天數(shù)對(duì)應(yīng)不同 QQ 等級(jí),如表所示,0 級(jí)至 1 級(jí)需活躍 5 天,1 級(jí)至 2 級(jí)需活躍7天,依此類推。③每升1級(jí),用戶可以獲取1個(gè)△,4 個(gè)△兌換1個(gè)◇,4個(gè)◇兌換1個(gè)○,4 個(gè)○兌換 1個(gè)☆。級(jí)別 圖標(biāo) 累計(jì)活躍天數(shù)0級(jí) 0天1級(jí) △ 5天2級(jí) △△ 12天3級(jí) △△△ 21天4級(jí) ◇ 32天5級(jí) ◇△ 45天(1)小張的 QQ 等級(jí)圖標(biāo)為○◇◇◇△△,則小張 QQ 等級(jí)的級(jí)別是 。 (2)“l(fā)og.txt”文件中逐行記錄了某位用戶每天的在線時(shí)長(zhǎng)(以小時(shí)為單位),編程實(shí)現(xiàn)讀取文件內(nèi)容并計(jì)算,按☆○◇△的順序輸出用戶的 QQ 等級(jí)圖標(biāo),請(qǐng)?jiān)趧澗€處填入合適的代碼。f=open('log.txt')data=[]active=0icon=["☆","○","◇","△"]#逐行讀取'log.txt'文件中的數(shù)據(jù),依次添加到 data 列表中,如data=[1.9, 2.3,11.5,3.1,2.8,5.2……]代碼略#計(jì)算用戶的活躍天數(shù)for i in range(len(data)): if data[i] >= 2: active+=1 elif data[i]>=0.5: ① #計(jì)算用戶等級(jí)base=5level=0while active >=base: level+=1 ② base = base + 2#將等級(jí)換算為圖標(biāo)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.每個(gè)人進(jìn)、出館的時(shí)間用一個(gè)長(zhǎng)度為11的字符串表示,例如“08:05-08:45”表示進(jìn)館時(shí)間為8點(diǎn)05分,出館時(shí)間為8點(diǎn)45分?,F(xiàn)要求統(tǒng)計(jì)當(dāng)天館內(nèi)人數(shù)超過指定人數(shù)的總時(shí)長(zhǎng),當(dāng)天在館人數(shù)最多時(shí)刻及在館人數(shù)。(1)8點(diǎn)01分到8點(diǎn)08分的進(jìn)出館人數(shù)如下表所示:分鐘 01 02 03 04 05 06 07 08進(jìn)館人數(shù) 5 0 4 2 1 3 1 2出館人數(shù) 0 1 1 1 6 3 2 2在館人數(shù)最多時(shí)刻為 。 (2)每個(gè)參觀者進(jìn)入場(chǎng)館和出館時(shí)間保存在“參觀記錄.txt”文件中,編寫Python程序,請(qǐng)將程序補(bǔ)充完整。rs=[0]*540 #存儲(chǔ)早上8點(diǎn)至下午5點(diǎn)每分鐘的在館人數(shù)f=open("參觀記錄.txt",encoding="utf-8")n=0for sj in f : m1=int(sj[:2])*60+int(sj[3:5])-480#將入館時(shí)間轉(zhuǎn)換為上午8點(diǎn)以后的分鐘數(shù) m2=int(sj[6:8])*60+int(sj[9:11])-480 rs[m1]+=1 ?、佟 ?sp =int(input("請(qǐng)輸入指定人數(shù):"))totrs=imax=sumrs=0itime=""for i in range(540): ② if totrs>sp: ?、邸 ? if totrs>imax: imax=totrs itime=str(i∥60+8)+":"+str(④ ) print("超過指定人數(shù)的總時(shí)長(zhǎng):" + str(sumrs) + "分鐘")print("在館人數(shù)最多時(shí)刻為:" + itime + ",共" + str(imax) + "人")16.挖金礦游戲。在一個(gè)8行8列的矩陣中,礦工位于第1行第1列的格子,n個(gè)金礦隨機(jī)分布在第1行下面的各個(gè)格子中,每個(gè)金礦的橫坐標(biāo)依次保存在x數(shù)組,縱坐標(biāo)保存在y數(shù)組。礦工收集金礦方法:先確定每行最左邊和最右邊金礦的坐標(biāo),對(duì)于同一行的金礦,礦工先移動(dòng)到最左邊金礦正上方,再執(zhí)行向下x步的指令進(jìn)行挖礦,接著從該行左邊第2個(gè)金礦開始一直挖到最右邊。該行完成后,再依次挖下方各行的金礦。下圖a所示的金礦(圖中黑色方塊)分布圖,按右側(cè)所示的指令,可以收集全部金礦。(1)現(xiàn)有4*4的金礦分布圖如圖b所示,礦工在左上角位置,寫出礦工按規(guī)則獲得所有金礦的指令(指令之間用逗號(hào)或空格隔開) 。 (2)編寫程序,按順序輸出指令,使礦工按照規(guī)則得到所有金礦,將空白處填寫完整。x=[2,2,5,5,5,8] #各金礦行號(hào),從小到大升序排列y=[1,2,4,5,8,6] #各金礦列號(hào),同一行金礦,列號(hào)從小到大升序排列n=len(x) #金礦數(shù)量px=py=1 #礦工初始位置行號(hào)和列號(hào)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 展開更多...... 收起↑ 資源列表 驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn) 課件(共36張ppt)浙教版(2019)必修1.pptx 驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)(含答案)浙教版(2019)必修1.doc 驗(yàn)收卷(三) 算法的程序?qū)崿F(xiàn)(學(xué)生版)浙教版(2019)必修1.doc 縮略圖、資源來源于二一教育資源庫(kù)