資源簡介 第二單元 編程計算 單元測試一、選擇題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) 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫