資源簡介 中小學(xué)教育資源及組卷應(yīng)用平臺2024信息技術(shù)學(xué)業(yè)水平考試專題練優(yōu)化集訓(xùn)13 解析算法與枚舉算法1.下列問題中適合使用解析算法解決的是( )A.計(jì)算兩個(gè)電阻的并聯(lián)值B.輸出2~100以內(nèi)的所有素?cái)?shù)C.查找100以內(nèi)所有能被6整除的數(shù)D.找出100以內(nèi)所有6的倍數(shù)2.編寫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) 3.用枚舉算法輸出100以內(nèi)既能被3整除又能被5整除的數(shù)據(jù),我們可以從算法不同角度去思考,確定枚舉范圍,下列選項(xiàng)中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)4.解析算法的基本思想是根據(jù)問題的 與 之間的關(guān)系,找出求解問題的 ,并通過表達(dá)式的 來實(shí)現(xiàn)問題的求解。 5.枚舉算法的程序?qū)崿F(xiàn)中,使用 (單選,填字母:A.分支結(jié)構(gòu)/B.循環(huán)結(jié)構(gòu))羅列出問題所有可能的解,循環(huán)中通過 (單選,填字母:A.分支結(jié)構(gòu)/B.循環(huán)結(jié)構(gòu))判斷當(dāng)前的可能解是不是真正的解。 6.編寫Python程序,實(shí)現(xiàn)如下功能:輸入全票價(jià)格和消費(fèi)者身高,輸出消費(fèi)者應(yīng)付的實(shí)際票價(jià)。實(shí)際票價(jià)的計(jì)算規(guī)則為:身高1.2米及以下免票;身高1.2米以上且1.4米及以下半票;身高超過1.4米全票。程序代碼如下。在劃線處填上合適的代碼。jg=float(input('請輸入全票價(jià)格:'))h=float(input('請輸入消費(fèi)者身高(米):'))if h<=1.2:pj=0① pj=jg 0.5② pj=jgprint('票價(jià)為',round(pj,2),'元')7.某壓縮算法的基本思想是用一個(gè)數(shù)值和一個(gè)字符代替具有相同值的連續(xù)字符串。例如,輸入字符串“RRRRRGGBBBBBB”,壓縮后數(shù)據(jù)為“5R2G6B”。實(shí)現(xiàn)上述功能的Python程序如下。輸入字符串:RRRRRGGBBBBBB壓縮后數(shù)據(jù)為:5R2G6B請回答下列問題:(1)請?jiān)诔绦騽澗€處填入合適的代碼。(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)提出了這樣一個(gè)問題:“雞翁一值錢5,雞母一值錢3,雞雛三值錢1。問:花錢100買100只雞,雞翁、雞母、雞雛各幾何 ”實(shí)現(xiàn)上述功能Python代碼如下。請?jiān)趧澗€處填入合適的代碼。for i in range(21):for j in range(34): ① if② : print(″公雞:″,i,″母雞:″j,″小雞:″k)9.有四個(gè)數(shù)字:1、2、3、4,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù) 輸出所有滿足條件的三位數(shù)的組合。編寫Python程序如下,請將劃線處代碼補(bǔ)充完整。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(② ,″個(gè)″,arr) 10.輸入一段英文句子,以英文句號結(jié)尾,并把句中所有單詞存入一個(gè)列表中,如此可以方便統(tǒng)計(jì)單詞的個(gè)數(shù),也方便讀取任意位置單詞。例如輸入:“I am a student of senior middle school.”處理完畢后:[I,am,a,student,of,senior,middle,school],程序運(yùn)行效果如下:請輸入一個(gè)英文句子:I am a student of senior middle school.將單詞分別存入列表后為:['I','am','a','student','of','senior','middle','school']為實(shí)現(xiàn)上述功能,請完善以下Python程序,在劃線處填入合適的代碼。s1 = input(″請輸入一個(gè)英文句子:″)list1=[]s=″ ″for ch in① : if ″a″<=ch<=″z″ or ② : s+=ch else: list1+=[s] ③ print(″將單詞分別存入列表后為:″,list1)11.一張單據(jù)上有一個(gè)5位數(shù)的編碼,由于保管不善,其萬位數(shù)字和百位數(shù)以及十位數(shù)已經(jīng)變得模糊不清,如圖a所示,即“ 5 6”。但知道該數(shù)是37和17的倍數(shù)。現(xiàn)在用Python編程求解該問題,運(yùn)行界面如圖b所示。輸出所有滿足這些條件的5位數(shù),并統(tǒng)計(jì)這樣的數(shù)的個(gè)數(shù)。問題:(1)請?jiān)趧澗€處填入合適的代碼。(2)該算法使用的算法是 (選填:解析算法/枚舉算法) 圖a圖bcount=0for i in range(① ): for j in range(100): if② : count+=1 print(③ ) print(″符合要求的數(shù)字?jǐn)?shù)量:″,count)12.完全數(shù)(Perfect number),又稱完美數(shù)或完備數(shù),是一些特殊的自然數(shù)。它所有的真因子(即除了自身以外的約數(shù))的和(即因子函數(shù)),恰好等于它本身。請你完善下面Python程序,找出1000以內(nèi)的所有完全數(shù)。def perfect(m):if m<=1:return Falsesum=1for i in range(2,m//2+① ): if m%i==0② : sum+=ireturn m==sumlist1=[]for i in range(1,1001):if perfect(i): list1.append(i)print(list1)優(yōu)化集訓(xùn)13 解析算法與枚舉算法1.A 解析 本題考查解析算法。計(jì)算兩個(gè)電阻的并聯(lián)值適合使用數(shù)學(xué)函數(shù)關(guān)系運(yùn)算,故選A。2.C 解析 此題關(guān)鍵是要將數(shù)學(xué)表達(dá)式C=5 (F-32)/9,轉(zhuǎn)換成python表達(dá)式。3.D 解析 這道題考核的是枚舉算法的范圍及其等價(jià)表達(dá)式。選項(xiàng)A,B,C答案均正確,通過條件數(shù)學(xué)等價(jià)式分析,我們發(fā)現(xiàn)能被15整除的數(shù)一定能被3和5同時(shí)整除。從算法執(zhí)行的效率上來看,選項(xiàng)A,B枚舉的范圍都是[1,100],執(zhí)行次數(shù)相同。選項(xiàng)C枚舉的是公差為15的等差數(shù)列,100以內(nèi)的數(shù)據(jù)共有6個(gè):15,30,45,60,75,90。因此選項(xiàng)C枚舉算法執(zhí)行效率較高。選項(xiàng)D本意是想枚舉15的整數(shù)倍,錯(cuò)誤的原因在于邊界。101//15值為6,但是變量i的取值為[1..5],因此選項(xiàng)D錯(cuò)誤原因是遺漏了90這組解。4.前提條件 所求結(jié)果 數(shù)學(xué)表達(dá)式 計(jì)算5.B A6.①elif h<=1.4: ②else: 解析 ①根據(jù)題意可知滿足條件pj=0.5 jg 半價(jià)h<=1.4,多條件的分支,只有第1個(gè)條件跟在if后面,第2個(gè)條件開始跟在elif后面。②第2個(gè)條件也不滿足時(shí)pj=jg,所以是對第2個(gè)條件的否定,但不需要引導(dǎo)新的條件else:。7.(1)①ans=″ ″ ②s[i]==s[i+1] ③c=1 (2)5R2G (3)B 解析 本題考查枚舉算法。(1)①字符串變量ans初始化。②由于for語句中i從0開始,因此相鄰的兩個(gè)字符相同的表達(dá)式為s[i]==s[i+1]。③若相鄰的兩個(gè)字符不同,則意味著用于連續(xù)相鄰相同字符數(shù)的變量c恢復(fù)為1,為記錄下一組字符做準(zhǔn)備。(2)由于刪除了加框處代碼,由于無法觸發(fā)else分支,因此最后一組數(shù)據(jù)無法輸出,故答案是5R2G。(3)由代碼可知,枚舉所有的字符,并進(jìn)行比較,屬于典型的枚舉算法。8.①k=100-i-j ②i 5+j 3+k/3==100 解析 本題考查枚舉算法。利用變量k降低循環(huán)的次數(shù),小雞的數(shù)量等于100減去公雞和母雞的數(shù)量,然后利用總共的雞的價(jià)格一百元錢,列舉出公雞、母雞和小雞的數(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ù)的大小寫英文字母的組合,則進(jìn)行正向連接,若遇到非英文字母(空格)則將前面的字母組合(單詞)s累加到列表list1[]中,且將字符串s清空,為接收下一個(gè)英文單詞做準(zhǔn)備。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ù),故表達(dá)式為(i 10000+5006+j 10)%37==0 and (i 10000+5006+j 10)%17==0。③該數(shù)的表達(dá)式為i 10000+5006+j 10。(2)列舉范圍內(nèi)所有的可能性,且有判斷和輸出語句,符合枚舉算法的特點(diǎn)。12.①2,m//2+1 ②m%i==0 解析 本題采用的是枚舉算法,由于1是所有數(shù)的因子,所以我們只枚舉因子范圍是除1和m數(shù)之外所有因子,①答案為2,m-1。但從算法效率思考:由于最小因子是2,最大因子是m//2,所以最佳答案為2,m//2+1,這樣處理算法的效率將提升一倍。②處需要判斷i是否為m的約數(shù),應(yīng)填寫的代碼是m%i==0。21世紀(jì)教育網(wǎng) www.21cnjy.com 精品試卷·第 2 頁 (共 2 頁)21世紀(jì)教育網(wǎng)(www.21cnjy.com) 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫