資源簡介 中小學(xué)教育資源及組卷應(yīng)用平臺2025普通高中信息技術(shù)學(xué)業(yè)水平考試優(yōu)化集訓(xùn)10 解析算法與枚舉算法1.下列問題中適合使用解析算法解決的是( )A.計算兩個電阻的并聯(lián)值B.輸出2~100以內(nèi)的所有素數(shù)C.查找100以內(nèi)所有能被6整除的數(shù)D.找出100以內(nèi)所有6的倍數(shù)2.有如下Python程序段: b=[5,3,2,1,8,6,7] a=b[1:5] k=″ ″ for i in a:if i%2==0: k=k 2else: k=k+″ ″ print(k)執(zhí)行該程序段后,顯示結(jié)果是( )A. B. C. D. 3.有Python程序段如下: s = 0 for i in range(1,12,2):if i % 3==0: s = s + i print(s)執(zhí)行該程序段后,輸出結(jié)果為( )A.55 B.8 C.18 D.124.有以下Python程序: n=int(input()) count=n while n>=3:count=count+n//3n=n%3+n//3 print(count)若輸入n的值為15,則輸出count的值為( )A.20 B.21 C.22 D.235.編寫Python程序,將華氏溫度轉(zhuǎn)換為攝氏溫度并保留兩位小數(shù),轉(zhuǎn)換公式為:C=5 (F-32)/9,程序如下,劃線處應(yīng)填( )f=float(input(″請輸入華氏溫度:″))c= print(″對應(yīng)的攝氏溫度為:%.2f ″%c) A.5//9 (f-32)B.5/9 (f-32)C.5/9 (f-32)D.5/9(f-32) 6.用枚舉算法輸出100以內(nèi)既能被3整除又能被5整除的數(shù)據(jù),我們可以從算法不同角度去思考,確定枚舉范圍,下列選項中Python程序處理有誤的是( )A.for i in range(1,101):if i%3==0 and i%5==0: print(i)B.for i in range(1,101):if i %15==0: print(i)C.for i in range(15,101,15):print(i)D.for i in range(1,101//15): print(i 15)7.某壓縮算法的基本思想是用一個數(shù)值和一個字符代替具有相同值的連續(xù)字符串。例如,輸入字符串“RRRRRGGBBBBBB”,壓縮后數(shù)據(jù)為“5R2G6B”。實現(xiàn)上述功能的Python程序如下。輸入字符串:RRRRRGGBBBBBB壓縮后數(shù)據(jù)為:5R2G6B請回答下列問題:(1)請在程序劃線處填入合適的代碼。(2)若刪除加框處代碼,輸入字符串“RRRRRGGBBBBBB”,則壓縮后結(jié)果為 。 s=input(″輸入字符串:″)c=1① for i in range(len(s)-1):if② : c+=1else: ans+=str(c)+s[i] ③ ans+=str(c)+s[i]print(″壓縮后數(shù)據(jù)為:″,ans)(3)該程序主要使用的算法屬于 (單選,填字母:A.解析算法/B.枚舉算法)。 8.百錢買百雞問題:我國古代數(shù)學(xué)家曾經(jīng)提出了這樣一個問題:“雞翁一值錢5,雞母一值錢3,雞雛三值錢1。問:花錢100買100只雞,雞翁、雞母、雞雛各幾何 ”實現(xiàn)上述功能Python代碼如下。請在劃線處填入合適的代碼。for i in range(21):for j in range(34): ① if② : print(″公雞:″,i,″母雞:″j,″小雞:″k)9.有四個數(shù)字:1、2、3、4,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù) 輸出所有滿足條件的三位數(shù)的組合。編寫Python程序如下,請將劃線處代碼補充完整。arr=[]for i in range(1,5):for j in range(1,5): for k in range(1,5): num=100 i+10 j+k if i!=j and j!=k and ① : arr.append(num)print(② ,″個″,arr) 10.輸入一段英文句子,以英文句號結(jié)尾,并把句中所有單詞存入一個列表中,如此可以方便統(tǒng)計單詞的個數(shù),也方便讀取任意位置單詞。例如輸入:“I am a student of senior middle school.”處理完畢后:[I,am,a,student,of,senior,middle,school],程序運行效果如下:請輸入一個英文句子:I am a student of senior middle school.將單詞分別存入列表后為:['I','am','a','student','of','senior','middle','school']為實現(xiàn)上述功能,請完善以下Python程序,在劃線處填入合適的代碼。s1 = input(″請輸入一個英文句子:″)list1=[]s=″ ″for ch in① : if ″a″<=ch<=″z″ or ② : s+=ch else: list1+=[s] ③ print(″將單詞分別存入列表后為:″,list1)11.一張單據(jù)上有一個5位數(shù)的編碼,由于保管不善,其萬位數(shù)字和百位數(shù)以及十位數(shù)已經(jīng)變得模糊不清,即“ 5 6”。但知道該數(shù)是37和17的倍數(shù)。現(xiàn)在用Python編程求解該問題,運行界面如圖所示。輸出所有滿足這些條件的5位數(shù),并統(tǒng)計這樣的數(shù)的個數(shù)。問題:(1)請在劃線處填入合適的代碼。(2)該算法使用的算法是 (選填:解析算法/枚舉算法) count=0for i in range(① ): for j in range(100): if② : count+=1 print(③ ) print(″符合要求的數(shù)字數(shù)量:″,count)12.求各個素數(shù)的和,例如在運行程序后輸入:“2,3,4,5,6,7,8,”(不包括雙引號,數(shù)字之間用逗號隔開),自動輸出:“4個素數(shù)的和為: 17”。實現(xiàn)上述功能的Python代碼如下,運行界面如圖所示。s=2,3,4,5,6,7,8,4個素數(shù)的和為:17>>>請回答下列問題:(1)在劃線處填入合適的代碼。 def prime(n):flag=Truefor i in range(2,n): if ① : flag=False breakif flag: return Trueelse: return False s=input(″s=″) #主程序,輸入數(shù)字字符,中間用逗號隔開 t=0;ans=0 n=0;k=0 for i in range(len(s)):if not(″0″<=s[i]<=″9″): ② if prime(t): ③ n+=1 k=i+1 print(n,″個素數(shù)的和為:″,ans)(2)若輸入數(shù)據(jù)“33,2,3,4,7”,運行上述程序,得到求和的結(jié)果是 (僅填數(shù)字)。 13.在“三位一體”招生考試中,學(xué)考成績占據(jù)一定的比例。某高校學(xué)考等級成績折算表如下(學(xué)考等級分為 A、B、C、D、E ),如果有學(xué)科等級為E,則折合總分計0分。某高校學(xué)考等級成績折算表學(xué)業(yè)水平考試等級 A B C D成績折算(分) 10 8 6 4編寫Python程序?qū)崿F(xiàn)學(xué)考成績折算。某學(xué)生的折合分數(shù)如下圖所示。請輸入各學(xué)科學(xué)考等級:AAAAABACBA折合分數(shù)為:92(1)若輸入的學(xué)生學(xué)考等級為“AAABBBCCDC”,則折合分數(shù)為: 。 (2)實現(xiàn)上述功能的Python程序如下,請在劃線處填入合適的代碼。 s=input(″請輸入各學(xué)科學(xué)考等級:″) ① for t in ② : if t==″A″: scores+=10elif t==″B″: scores+=8elif t==″C″: scores+=6elif t==″D″: scores+=4else: scores=0 ③ print(″折合分數(shù)為:″,scores)14.學(xué)校開展“學(xué)憲法”知識競賽活動,其中有一項任務(wù)為完成“學(xué)憲法”答卷記得分。答卷含有5個客觀題和5個主觀題,其中客觀題1~4題為單選題,第5題為多選題,單選題每題分值為2分;多選題全對得2分,漏選、少選得1分,多選、錯選不得分。為了提高改卷效率,學(xué)校信息技術(shù)組的老師設(shè)計并編寫了一個Python小程序,輸入客觀題正確答案和答卷上的答案,即可計算得分。實現(xiàn)上述功能的Python程序如下,運行界面如圖所示。請輸入5題正確答案:AABDACD請輸入5題答題結(jié)果:ABBDAC客觀題得分為:7分 def judge(x,y):f=Truei=0while i if y[i] not in x: ① break i=i+1return f num=0 key=input(″請輸入5題正確答案:″) s=input(″請輸入5題答題結(jié)果:″) for j in range(5):if j==4: if key[j:len(key)]==s[j:len(s)]: num=num+2 elif ② : num=num+1else: if s[j]==key[j]: num=num+2 print(″客觀題得分為:″+ ③ +″分″) (1)請補全劃線處代碼。(2)若正確答案為“AABDACD”,答題給出答案為“ABBCAD”,則客觀題最終得分為 分。 優(yōu)化集訓(xùn)10 解析算法與枚舉算法1.A 解析 本題考查解析算法。計算兩個電阻的并聯(lián)值適合使用數(shù)學(xué)函數(shù)關(guān)系運算,故選A。2.D 解析 本題考查Python語言基礎(chǔ)及字符串知識。經(jīng)過切片后列表a的值為[3,2,1,8]。當(dāng)i為3時,k值變?yōu)椤? ”;當(dāng)i的值為2時,k值變?yōu)樵鹊?倍,即“ ”;當(dāng)i的值為1時,k值變?yōu)椤? ”,當(dāng)i的值為8時,k值變?yōu)?個“ ”,故選D。3.D 解析 本題實質(zhì)上是求循環(huán)變量i中3的倍數(shù)的和:3+9=12,故答案選D。4.C 解析 第1次循環(huán)后n=5,count=20; 第2次循環(huán)后n=3,count=21; 第3次循環(huán)后n=1,count=22。5.C 解析 此題關(guān)鍵是要將數(shù)學(xué)表達式C=5 (F-32)/9,轉(zhuǎn)換成python表達式。6.D 解析 這道題考核的是枚舉算法的范圍及其等價表達式。選項A,B,C答案均正確,通過條件數(shù)學(xué)等價式分析,我們發(fā)現(xiàn)能被15整除的數(shù)一定能被3和5同時整除。從算法執(zhí)行的效率上來看,選項A,B枚舉的范圍都是[1,100],執(zhí)行次數(shù)相同。選項C枚舉的是公差為15的等差數(shù)列,100以內(nèi)的數(shù)據(jù)共有6個:15,30,45,60,75,90。因此選項C枚舉算法執(zhí)行效率較高。選項D本意是想枚舉15的整數(shù)倍,錯誤的原因在于邊界。101//15值為6,但是變量i的取值為[1..5],因此選項D錯誤原因是遺漏了90這組解。7.(1)①ans=″ ″ ②s[i]==s[i+1] ③c=1 (2)5R2G (3)B 解析 本題考查枚舉算法。(1)①字符串變量ans初始化。②由于for語句中i從0開始,因此相鄰的兩個字符相同的表達式為s[i]==s[i+1]。③若相鄰的兩個字符不同,則意味著用于連續(xù)相鄰相同字符數(shù)的變量c恢復(fù)為1,為記錄下一組字符做準備。(2)由于刪除了加框處代碼,由于無法觸發(fā)else分支,因此最后一組數(shù)據(jù)無法輸出,故答案是5R2G。(3)由代碼可知,枚舉所有的字符,并進行比較,屬于典型的枚舉算法。8.①k=100-i-j ②i 5+j 3+k/3==100 解析 本題考查枚舉算法。利用變量k降低循環(huán)的次數(shù),小雞的數(shù)量等于100減去公雞和母雞的數(shù)量,然后利用總共的雞的價格一百元錢,列舉出公雞、母雞和小雞的數(shù)量。9.①k!=i and num not in arr ②len(arr) 解析 本題考查枚舉算法。數(shù)字無重復(fù),且該數(shù)字之前未出現(xiàn)在列表arr中。輸出該列表的長度。10.①s1 ②″A″<=ch<=″Z″ ③s=″ ″ 解析 本題考查枚舉算法。利用枚舉法列舉ch為字符串s1的值,若是連續(xù)的大小寫英文字母的組合,則進行正向連接,若遇到非英文字母(空格)則將前面的字母組合(單詞)s累加到列表list1[]中,且將字符串s清空,為接收下一個英文單詞做準備。11.(1)①1,10 ②(i 10000+5006+j 10)%37==0 and (i 10000+5006+j 10)%17==0 ③i 10000+5006+j 10 (2)枚舉算法 解析 本題考查枚舉算法。(1)①最高位不可能是0,因此從1開始枚舉,一直到9。②該數(shù)是37和17的倍數(shù),故表達式為(i 10000+5006+j 10)%37==0 and (i 10000+5006+j 10)%17==0。③該數(shù)的表達式為i 10000+5006+j 10。(2)列舉范圍內(nèi)所有的可能性,且有判斷和輸出語句,符合枚舉算法的特點。12.(1)①n%i==0 ②t=int(s[k:i]) ③ans+=t(答案不唯一) (2)5 解析 本題考查Python基礎(chǔ)知識及切片知識。(1)①若n能被i整除,則n就不是素數(shù)。故此處表達式為 n%i==0。②結(jié)合代碼上下文,可知此處t的表達式是被逗號分隔的數(shù)字字符,且必須轉(zhuǎn)換為數(shù)字類型,k是改組數(shù)字字符的開始位置,i是改組數(shù)字字符的結(jié)束位置(逗號位置),綜上,表達式為t=int(s[k:i])。③變量ans是素數(shù)的累加結(jié)果,因此答案是ans+=t。(2)由于最后的7后面沒有逗號,因此素數(shù)的和是2+3=5。13.(1)76 (2)①scores=0 ②s ③break 解析 (1)3 10+3 8+3 6+4=76;(2)根據(jù)循環(huán)條件可知,變量scores沒有賦值過,所以①中填寫scores=0;由t==″A″可知,t為字符串s的值,故②中填寫s;根據(jù)題中描述,如果有學(xué)科等級為E,則折合總分計0分,③中填寫break。14.(1)①f=False ②judge(key[j:len(key)],s[j:len(s)]) ③str(num) (2)5 解析 (1)本題考查的算法思路是字符串的比對,1~4題是單選題,因此只要使用循環(huán)結(jié)構(gòu)依次在正確答案和答卷答案中對應(yīng)位置取出字符進行比對即可,若比對上即為答對,總分累加2分;若未比對上即為答錯,不得分。第5題是多選題,因為存在漏選、少選和錯選的情況,答對得2分,漏選、少選得1分,錯選不得分,因此需要使用自定義函數(shù)judge(x,y)進行判斷。調(diào)用函數(shù)judge(x,y)得,若結(jié)果為True則表明是漏選、少選,得1分;若結(jié)果為False則表明是錯選,不得分。①空所在語句表示當(dāng)錯選時得結(jié)果,故答案為f=False。②空所在語句表示將第5題答案并不是全對時,取出第5題答卷上的答案利用函數(shù)judge(x,y)進行判斷是漏選、少選還是錯選,故答案為judge(key[j:len(key)],s[j:len(s)])。③空所在語句表示最終得分的輸出,要注意是以字符的形式進行輸出,故答案為str(num)。(2)根據(jù)題干給出的計算規(guī)則可得。21世紀教育網(wǎng) www.21cnjy.com 精品試卷·第 2 頁 (共 2 頁)21世紀教育網(wǎng)(www.21cnjy.com) 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫