資源簡介 第三章 算法的程序?qū)崿F(xiàn) 章節(jié)測試一、選擇題1.王偉東同學(xué)準(zhǔn)備用下列的變量名來進(jìn)行編程,在程序運(yùn)行中不會報錯的是( )A.we_1 B.3we C.he&w D.input2.利用計算機(jī)編程解決問題的過程中,需要使用一種程序設(shè)計語言來實現(xiàn)算法,這個過程叫做( )。A.分析問題 B.設(shè)計算法 C.編寫程序 D.調(diào)試程序3.下面Python函數(shù)的作用,選項錯誤的是( )A.增加代碼的維護(hù)難度 B.實現(xiàn)代碼的復(fù)用C.增強(qiáng)代碼的可讀性 D.使代碼的邏輯結(jié)構(gòu)更清晰4.已知字典dict1={1001:”mali”, 1002:”lucy”, 1003:”jack”, 1004:”jhon” },要得到字典中的“jack”,下列方法可行的是( )A.dict1[2] B.dict1{1003}C.dict1[1003] D.dict1[“jack”]5.某公司在第一年初購買了一臺價值為120萬元的設(shè)備,該設(shè)備的價值在使用過程中逐年減少。已知從第2年到第6年,每年初的價值比上年初減少10萬元;從第7年開始,每年初的價值為上年初的75%。編寫Python程序計算第10年初設(shè)備的價值,程序第5行下劃線處應(yīng)填入( )1 #計算設(shè)備現(xiàn)有價值2 value=1203 for i in range(2,11):4 if i<=6:5 __________6 else:7 value=value*0.758 print(“該設(shè)備第10年初的價值為:”,value,“萬元”)A.value=120-10 B.value=value-10 C.value=120-i D.value=value-i6.用高級語言編寫的程序( )。A.占用內(nèi)存空間非常少B.很復(fù)雜且難以理解C.必須由翻譯程序?qū)⑵渚幾g成機(jī)器語言,才能在計算機(jī)上執(zhí)行D.只能在某種計算機(jī)上運(yùn)行7.小張收集了近階段要學(xué)習(xí)的英文單詞,存儲為“data.txt”文件,格式如圖所示。處理“data.txt”文件中英文單詞的 Python 程序段如下:file=“data.txt”n=0for word in open(file): #打開文件準(zhǔn)備讀 if word[0:1]=='c': #word每次讀到第一行信息,word[0:1]則是當(dāng)前行字符的第1個字符 n=n+1 print(n)運(yùn)行該程序段后,輸出的值為( )A.1 B.2 C.3 D.58.input()函數(shù)的返回結(jié)果都是( ),有時需要將其轉(zhuǎn)化為相應(yīng)的類型再處理。A.?dāng)?shù)值 B.字符串 C.列表 D.元組9.在Python中,表達(dá)式18//3**2+15%4的結(jié)果是( )A.39 B.15 C.5 D.310.下列不屬于 Python 的數(shù)據(jù)類型關(guān)鍵字的是( )A.int B.double C.float D.str11.有如下Python程序段:from random import randintn=8a=[0]*nk=randint(1,3)for i in range(n): a[i]=randint(0,50)for i in range(0,n//k+1): j=0 while j+k< n: if a[j]>a[j+k]: t=a[j];a[j]=a[j+k];a[j+k]=t j+=1print(a)執(zhí)行該程序段后,輸出的結(jié)果不可能是( )A.[3,14,17,25,28,31,32,37] B.[31,6,29,12,18,31,17,34]C.[1,4,20,5,48,23,49,46] D.[3,6,30,14,38,32,41,45]12.小曲使用Python編寫了下面一個函數(shù),如果執(zhí)行fact(5)語句的值為( )1 def fact(n)2 i=13 f=14 while i<=n:5 f=f*i6 i=i+17 return fA.1 B.120 C.24 D.72013.小明用某種語言編寫了段源代碼如下圖所示,實現(xiàn)了“任意輸入一個整數(shù),輸出其絕對值”的功能。如下說法正確的是( )A.這是機(jī)器語言編寫的指令序列,計算機(jī)可以直接指行B.這是匯編語言編寫的指令序列,計算機(jī)可以直接指行C.這是高級語言編寫的指令序列,計算機(jī)可以直接指行D.這是高級語言編寫的指令序列,需轉(zhuǎn)換成機(jī)器語言才能執(zhí)行14.python單行注釋和多行注釋分別是什么?( )A.""" """和''' ''' B.#和""" """ C.//和''' ''' D.#和//15.在學(xué)習(xí)PythonTurtle,小曲編寫繪制圖形的代碼如下所示,此代碼繪制的圖形是( )1 import turtle as t2 t.speed(0)3 for x in range(100):4 t.circle(x)5 t.left(92)6 t.done()A. B. C. D.二、填空題16.計算機(jī)編程解決問題的過程分為4步,分別是 、 、 、 ,其中 是信息編程加工的核心步驟。17.Python表達(dá)式50-9*3%4的運(yùn)算結(jié)果是 。18.閱讀以下程序,寫出程序運(yùn)行結(jié)果。def jc(n):s=1for i in range(2,n+1):s=s*ireturn stotal=jc(4) #調(diào)用jc函數(shù)print(total)程序運(yùn)行后,其輸出結(jié)果為19.要達(dá)到在窗口顯示不同位置的福字,需要完成兩個步驟:(1)在新的位置上 ;(2)把原來的圖像 。要“擦掉”某個圖像,可以選擇 它,通常采用 或者用 來覆蓋的方式。20.Python語言,在循環(huán)體中可以使用break語句和continue 語句控制程序的流程。 語句用于終止某個循環(huán),使程序跳到循環(huán)體以外的第一個可執(zhí)行語句。三、判斷題21.能夠產(chǎn)生隨機(jī)數(shù)的Python擴(kuò)展模塊是pandas。( )22.def塊中的代碼不是主程序的一部分,會跳過該段代碼.( )23.注釋語句是對程序代碼的解釋和說明,在運(yùn)行程序時不會被執(zhí)行。( )24.下列程序段中,賦值語句s=s+i被重復(fù)執(zhí)行了4次。s=0For i in range(3,10,2): s=s+i ( )25.Python是解釋型語言,翻譯一行就執(zhí)行一行。( )四、操作題26.Base64 編碼是計算機(jī)常見的一種編碼方式,規(guī)則是把 3 個字節(jié)(24 位)的數(shù)據(jù)按 6 位一組分成 4 組(24÷6=4),然后將每組數(shù)據(jù)分別轉(zhuǎn)換為十進(jìn)制,根據(jù)圖1將這些十進(jìn)制數(shù)所對應(yīng)的字符連接,即為 Base64 編碼。圖1-Base64 編碼表以編碼字符“Web”為例,如圖2所示,字符“Web”對應(yīng)的 ASCII 編碼分別是 87,101,98,分別轉(zhuǎn)換為 8 位二進(jìn)制數(shù),按 6 位二進(jìn)制數(shù)分組后再轉(zhuǎn)換成十進(jìn)制,查找它們對應(yīng)的字符,得到“Web”的 Base64 編碼為“V2Vi”。圖2編寫一個 Python 程序,實現(xiàn)上述功能。程序運(yùn)行時,輸入若干個字符(ASCII碼,個數(shù)必須是3的倍數(shù)),輸出Base64 編碼。請回答以下問題:(1)編碼字符“Wea”的 Base64 編碼為:(2)實現(xiàn)上述功能的 Python 代碼如下,請在劃線處填入合適的代碼s1 = input("請輸入編碼字符: ")tmp = 0s = ""ans = ""Base64 = "ABCDEFGHIJKLMNOPQRSTUVWSXYabcdefghijklmnopqrstuvwxyz012345678+/"for x in s1:n =t = ""for i in range(8): # 將十進(jìn)制數(shù) n 轉(zhuǎn)換為 8 位二進(jìn)制r = n % 2t =n = n // 2s = s + tfor i in range(len(s)): # 6位二進(jìn)制一組轉(zhuǎn)換成十進(jìn)制,查找Base64對應(yīng)字符tmp =if i % 6 == 5:ans = ans + Base64[tmp]tmp = 0print("Base64 編碼:", ans)27.為了督促學(xué)生寒假堅持體育鍛煉,老師采用線上打卡的方式收集學(xué)生鍛煉情況,數(shù)據(jù)如圖a所示。為統(tǒng)計冬鍛完成情況,編寫Python程序。請回答下列問題:(1)定義outdata函數(shù),其中參數(shù)dftmp是DataFrame數(shù)據(jù)類型,數(shù)據(jù)由圖a所示的Excel表導(dǎo)入。函數(shù)功能是:統(tǒng)計每天每個學(xué)生的鍛煉項目個數(shù),返回含有“學(xué)籍號”、“姓名”和“項目個數(shù)”信息的二維列表。函數(shù)代碼如下,劃線處應(yīng)填入的代碼為 。A.dftmp.at[i,j]==″√″ B.dftmp[i][j]=″√″ C. dftmp.at[j,i]==″√″ D.dftmp[j][i]=″√″def outdata(dftmp):a=[]for i in dftmp.index: #dftmp的行索引itemn=0for j in dftmp.columns[4:]: #dftmp中從“跑步”開始的列標(biāo)題if______:itemn+=1a.append([str(df[″學(xué)籍號″][i]),df[″姓名″][i],itemn])return a(2)冬鍛打卡成功的標(biāo)準(zhǔn)為累計運(yùn)動15天,每天鍛煉項目達(dá)到3項及以上。統(tǒng)計輸出寒假體育鍛煉達(dá)標(biāo)的學(xué)生名單,并制作四個項目的運(yùn)動次數(shù)對比圖,部分界面如圖b和圖c所示。部分Python程序如下,請在劃線處填寫合適的代碼或改正加框處代碼。import pandas as pdimport matplotlib. pyplot as pltdf=pd.read_excel(″sport.xls″)1st=outdata(df)print(″冬鍛打卡成功名單:″)i=0:flag=[False]*len(1st)while iif #xjh=1st[i][0]flag[i]=Truefor j in range(i+1,len(1st)):if 1st[j][0]==xjh and lst[j][2]>=3:flag[j]=Truedays+=1if days>=15:print(1st[i][0]+″/″+1st[i][1]+″/″+str(days)+″天″)ydl=df.count() #統(tǒng)計各列非空單元格數(shù)量,結(jié)果為Seriesiten=[″跑步″,″跳繩″,″俯臥撐″,″仰臥起坐″]nums=plt.bar(item,nums,label=″運(yùn)動次數(shù)″)#設(shè)置繪圖參數(shù),代碼略28.閱讀程序。閱讀求水仙花數(shù)的代碼并回答問題。“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個“水仙花數(shù)”,因為153=13+53+33,請計算并輸出所有三位數(shù)的水仙花數(shù)。for n in range(100,1000): i=n//100 j=n//10%10 k=n%10 if n==i*i*i+j*j*j+k*k*k:print(n)(1)//的符號作用是 。(2)%的符號作用是 。(3)==的符號作用是 。(4)在代碼中,變量i表示的是三位數(shù)中的 位。(5)在代碼中,變量j 表示的是三位數(shù)中的 位。(6)在代碼中,變量k表示的是三位數(shù)中的 位。(7)在range(100,1000)這個區(qū)域內(nèi),變量n無法取到的數(shù)值是 。29.回文素數(shù)是一個既是素數(shù)又是回文數(shù)的整數(shù)。如果一個整數(shù)只能被1和本身整除,這個數(shù)就是素數(shù)。如果一個數(shù)從左向右和從右向左讀是一樣的,這個數(shù)就是回文數(shù)。(1)實現(xiàn)判斷回文素數(shù)的Python程序如下,請在劃線處填入合適的代碼。def ss(i): #判斷素數(shù) for j in range(2,i): if ?、佟 ? return False return Truedef hw(i): #判斷回文數(shù) x=i k=0 while x!=0: k=k*10+x%10 ② if k==i: return True else: return Falsen=int(input("請輸入待檢測數(shù)據(jù)范圍:"))for i in range(2,n+1): if ?、邸 ?print(i)程序劃線①處應(yīng)填入的代碼為 ;程序劃線②處應(yīng)填入的代碼為 ;程序劃線③處應(yīng)填入的代碼為 。(2)本程序通過判斷并輸出回文素數(shù),這種算法屬于 (選填:“解析算法”或“枚舉算法”)。30.輸入一段長度為n的英文字母,對其進(jìn)行某種加密方法,描述如下:(1)將原文轉(zhuǎn)換為若干行m列(m為奇數(shù))的矩陣,最后一行若不足m個數(shù)據(jù)則以“#”填充。(2)將矩陣中的數(shù)據(jù),從末行末列數(shù)據(jù)開始以回路的方式提取字符。按順序生成加密字符。例如對字符“helloworld”,m=3的加密過程如下圖,其加密結(jié)果為“#lwleor#dolh”程序窗口界面如圖:請回答下列問題:(1)字符串“helloworld""”經(jīng)過加密后密文為“dollrleowh,則加密矩陣列數(shù)m為 。(2)上述加密算法對應(yīng)解密的VB程序代碼如下,請在劃線處填入合適的代碼。Private Sub commandl_click() Dim a As String, n As Integer, yw As String Dim i As Integer, j As Integer Dim index As Integer, k As Integer, x As Integer s= Text1.ext'文本框text中為待解密的字符串 m =Val(Text2.Text) n = Len(s) yw=″″ k=0 x=n/m For i= 1 To index=n-i+1 yw = yw+ Mid(s, index, 1) Forj=2 To m If Then index = index-2*(x-i)-1Else index = index-2*(i-1)-1 End If If Mid(s, index, 1) = "#" Then yw = yw+ Mid(s,index, 1) Next jNext iLabel1. Caption = Mid(yw, 1, Len(yw) - k)End Sub五、簡答題31.實現(xiàn)一個簡單的出租車計費系統(tǒng),當(dāng)輸入行程的總里程時,輸出乘客應(yīng)付的車費(車費保留一位小數(shù))。計費標(biāo)準(zhǔn)具體為起步價10元/3千米,超過3千米以后,每千米費用為1.2元,超過10千米以后,每千米的費用為1.5元。32.編寫一個程序,從鍵盤上輸入3個數(shù),計算這三個數(shù)的和,并輸出結(jié)果。33.從鍵盤上輸入一個字符,當(dāng)輸入的是英文字母時,輸出“輸入的是英文字母”;當(dāng)輸入的是數(shù)字時,輸出“輸入的數(shù)字”;當(dāng)輸入的是其他字符時,輸出“輸入的是其他字符”。34.編寫一個程序,它將找到所有這些數(shù)字,可被7整除,但不是5的倍數(shù),2000年至3200年(包括在內(nèi))。得到的數(shù)字應(yīng)按逗號分隔的順序打印在一行上。提示:考慮使用range(#begin,#end)35.利用python程序設(shè)計語言,編寫一個輸出1-10以內(nèi)的偶數(shù)(包含10)的代碼。參考答案1.A2.C3.A4.C5.B6.C7.B8.B9.C10.B11.B12.B13.D14.B15.A16.分析問題 設(shè)計算法 編寫代碼 調(diào)試運(yùn)行 算法設(shè)計17.4718.2419.畫出圖像 擦掉 “覆蓋” 重繪背景 其他對象20.break21.錯誤22.對23.正確24.正確25.正確26.V2Vh ord(x) str(r) + t tmp * 2 + int(s[i])或tmp=tmp*2+ord(s[i])-ord('0')27.AD not flag[i] and lst[i][2]>=3 days=1 i+=1 yd1[4:]或ydl.values[4:]28.整除 取余 判斷是否相等 百 十 個 100029.i%j==0 x=x//10 ss(i) and hw(i)或ss(i)=True and hw(i)=True 枚舉算法30.5 x j mod 2=0 k=k+131.km=float(input("請輸入千米數(shù):"))if km<=0: print("千米數(shù)輸入錯誤,重新輸入")elif km<=3: print("您需要支付10元車費")elif km<=10: cost=10+(km-3)*1.2 print("您需要支付{:.1f}元車費".format(cost))else: cost=18.4+(km-10)*1.5 print("您需要支付{:.1f}元車費".format(cost))32.a(chǎn) = input ( )b= input( )c = input( )d=int(a)+int(b)+int(c)print (d)33.ch=input("請輸入一個字符:")if ch.isdigit()==True: print("輸入的是數(shù)字")elif ch.isalpha()==True: print("輸入的是英文字母")else:print("輸入的是其他字符")34.l=[]for i in range(2000,3201): if (i%7==0)and (i%5!=0): l.append(str(i))print (','.join(1))35.代碼1:for value in range(2,11,2): print(value)代碼2:i=2while i<11: print(i)i=i+2 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫