資源簡介 第四章 程序設計基礎 單元測試一、選擇題1.在Python語言中,運行下面程序后,變量m的值為( )a=8b=16c=32if a>b: m=aelse: m=bif c>m: m=cprint(m)A.1 B.8 C.16 D.322.有如下Python程序段:import randoms="12345678"g=""for i in range(3): n=len(s) pos=random. randint(1,n-1) g+=s[pos] s=s[0:pos]+s[pos+1:n]print(g)在該程序段執行時,變量g的值可能為( )A."542" B."138" C."336" D."15"3.某Python程序段代碼如下,與該程序段功能等價的是( ))if x>90: y=x*0.5else: y=x*0.9A.if x>90: y=x*0.5 y=x*0.9 B.if x<90: y=x*0.9 else: y=x*0.5C.y=x*0.9 if x>90: y=x*0.5 D.if x>90: y=x*0.5 if x<90: y=x*0.9A.A B.B C.C D.D4.若x是整型變量,下列選項中,與表達式not(x>=0 and x<8)含義相同的是( )A.x<0 and x>=8 B.x<0 or x>=8 C.x>=0 or x<8 D.not x>=0 and not x<85.下列語句用于計算s=1+2+5+8+11+…+26的結果并輸出,則range函數的各個參數為s=1for i in range( ): s=s+iprint(s)A.1,26,3 B.1,27,3 C.2,26,3 D.2,27,36.已知a="012345",b=["012",3,4,5],c={0:1,2:4,3:5},下列語句執行完畢后,s的值為5的是( )A.s=0 for i in a[5]: s=s+1 B.s=0 for i in range(b[2]): s=s+1C.s=0 while s<=c[2]: s=s+1 D.s=0 while s>c[3]: s=s+1A.A B.B C.C D.D7.一個班的學生排成一列,從第一位同學開始按1-6循環報數,能正確表示第n位同學所報數字的Python表達式是( )A.n%6 B.n C.(n-1)%6+1 D.(n+1)%6-18.某Python程序如下:s="Dijob 2023"s1=""for i in range(0,len(s)): c=s[i] if"a"<=c<="z" or "A"<=c<="Z": s1=s1+chr(ord(c)-1) else: s1=c+s1print(s1)程序運行后,輸出的結果是( )A.China 2023 B.3202 China C.2023 China D.China 32029.a="345",若要構造其回文數b為"34543",以下語句無法實現的是( )A.b=a+a[-2:-4:-1] B.b=int(a)*100+int(a[1::-1])C.b=a+a[1]+a[0] D.b=(a[0]+a[1]+a[2])*210.某python程序如下,程序運行完后,輸出x的值是( )x=0for i in range(1,11,2):x+=iprint(x)A.9 B.16 C.25 D.3611.有如下Python程序,其功能為刪除無序鏈表(元素個數大于等于2)中的重復元素。def dele(a, head):pre=head; p=a[head][1]while p!=-1:q=headflag=Falsewhile :if a[q][0]==a[p][0]: p=a[p][1]flag=Truebreakq=a[q][1]if not flag:pre=p;p=a[p][1]a=[[0, 3], [1, 2], [1, 4], [0, 1], [0, 5], [2, -1]]dele(a, 0)①q!=-1 ②q!=p ③a[pre][1]=a[p][1] ④a[pre][1]=a[q][1]方框中填入的正確代碼依次為( )A.②④ B.②③ C.①④ D.①③12.列表d有n個整型元素,輸出列表中最長連續遞增序列的長度。小明編寫的Python程序段如下:k=1; lmax=1; n=len(d)for i in range(1, n):if d[i]>d[i-1]:k+=1else:if k>lmax:1max=kk=1print(lmax)該程序段在某些情況下無法得到符合題意的結果,下列4組數據中能測試出這一問題的是( )A.[1, 4, 5, 1, 2] B.[1, 2, 3, 4, 1] C.[1, 5, 1, 2, 3] D.[5, 4, 3, 2, 1]13.有如下Python自定義函數:def fun(x, i):if xreturn ielif x%i==0:return xelse:return fun(x-i, i+1)執行語句k=fun(37, 3)后,k的值為( )A.5 B.6 C.30 D.3414.已知列表a的長度為6,a[0]至a[5]的值依次為18,12,24,15,21,0,某程序如下所示:head, tail=0, 5x=a[head]head+=1while(head+1) % len(a)! =tail:t=y=a[head]head=(head+1)%len(a)if xx, y=y, xif x%y!=0:a[tail]=x%ytail=(tail+1)%len(a)x=tprint(a[head])程序運行后,輸出的結果是( )A.24 B.12 C.3 D.015.某 Python 程序段如下:from random import randint #randint(x,y)隨機產生[x,y]之間整數ans=""while len(ans)<3:t=chr(randint(0,25)+randint(0,1)*32+ord("A")) #大小寫字母ASCII碼值相差32if t not in ans:ans+=tprint(ans)程序運行后,輸出的結果不可能是( )A.Txt B.txt C.BMP D.jpg二、填空題16.自定義函數一般包括 、 、 和 四部分。17.以下程序中的函數CircleArea( )實現的功能是import mathdef CircleArea(r): area=math.pi *r *rreturn area18.在函數中, 是用來向函數傳遞值的。19.Python 語言使用 語句導入模塊。20.下列程序的作用是 。sum=0for i in range( 2,101,2): sum +=iprint( sum)三、判斷題21.下列Python程序段運行結束后,賦值語句sum=sum+i共被執行了9次。( )22.常量是指在程序運行過程當中其值始終不發生變化的量。( )23.print(1+"2")的輸出結果是"3"( )24.在Python中可以使用if作為變量名。( )25.在 Python 語言中,定義函數無須指定函數返回值的類型。( )四、操作題26.篩法求素數。埃拉托斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數學家埃拉托斯特尼所提出的一種簡單鑒定素數的算法。要得到自然數n以內的全部素數,必須把不大于根號n的所有素數的倍數剔除,剩下的就是素數。算法思想:先用2去篩,即把2留下,把2的倍數剔除掉;再用下一個質數,也就是3篩,把3留下,把3的倍數剔除掉;接下去用下一個質數5篩,把5留下,把5的倍數剔除掉;不斷重復下去……現在使用埃氏篩法求1~n之間的素數個數,代碼如下: n=int(input()) a=[1]*(n+1) a[0],a[1]=0,0#標記小于2的數,0表示非素數,1表示素數 ① i=2 while i<=n: if ② : for j in range(2*i,n+1,i): a[j]=0 i+=1 for i in range(n+1): ③ print(num)(1) 請在劃線處填入合適的代碼。(2) 若輸入的值為20,則輸出為 。27.編寫程序,實現如下功能:在鍵盤上輸入兩個正整數a、b(aa= int(input("請輸入整數a:"))b= int(input("請輸入整數b:"))s=0for i in ①____:if ②____:s=s+iprint("[" ,a, b,"]區間內的奇數和為:",s)程序中劃線①處應填入的代碼為程序中劃線②處應填入的代碼為28.輸入一個嵌套列表,嵌套層次不限,根據層次求列表元素的加權和。第一層每個元素的值為:元素值*1,第二層每個元素的值為:元素值*2,第三層每個元素的值為:元素值*3,…,運行程序如下圖所示請輸入列表:[2,4,[12,[5,8],-2],21]輸出結果:86請回答以下問題(1)輸入列表[[[1,-2,3]]],輸出結果是(2)請在劃線①②③④處填入合適的代碼s = input("請輸入列表:")count = 0ans = 0flag = 1while i < len(s):if s[i] == "[":count += 1elif s[i] == "]":count -= 1elif s[i] == "-":elif "9">=s[i]>="0":j = inum = 0while "9">=s[j]>="0":num =j += 1ans = ans+count*num*flagflag = 1i += 1print("輸出結果:",ans)29.數學學習小組在繪制余弦函數y=cos(x)的圖像,他們選擇的方式是利用Python編程進行繪圖,程序代碼如下所示:(1)需要完善程序代碼才能畫出余弦函數圖像,上面程序代碼第5行應該填寫 。(2)如果將程序代碼第3行修改為x=np.arange(-6,6,0.1),則第2行相應修改為 。30.某銀行在整存項目上,利率是0.02,每年結束的時候,將年度利息加入本金作為第二年的本金。如王阿婆第一年存入10000元,第二年的本金為10000x1.02=10200元,第三年以此類推。計算最少多少年后,王阿婆去取款的時候,至少可以拿到12000元。(1)根據題意,程序流程圖中應該填入 。(2)填寫程序中空缺的代碼,完成程序。(3)程序中,變量i代表的含義是 。(4)解決該問題使用的算法屬于( )(枚舉法/解析法/遞歸法)#銀行存款計算程序s=i=0whiles<12000: i=i+1 s=print(i)五、簡答題31.按照下列步驟順序,逐條寫出相應的代碼。(1)導入模塊math;(2)將16賦給變量a;(3)將表達式math.sqrt(a)的值賦給變量b;(4)將表達式a*b賦給變量c;(5)使用輸出語句在屏幕上輸出c的值。32.按照下列步驟順序,逐條寫出相應的代碼。(1)將字符串“國泰與”賦給變量a;(2)將字符串“民安”賦給變量b;(3)將表達式a+b的值賦給變量c;(4)將c[3]的值賦給變量d;(5)使用輸出語句在屏幕上輸出d的值。33.請描述列表和元組之間的區別,以及分別在他們之間轉型?34.編寫程序,根據輸入的年份(4位整數),判斷該年份是否是閏年。35.根據輸入的百分制分數,將其轉換為等級制(優、良、中、及格、不及格)并輸出。參考答案1.D2.A3.C4.B5.D6.C7.C8.B9.D10.C11.B12.C13.C14.C15.B16.函數名 參數 返回值 函數體17.求圓的面積18.參數19.import 模塊名20.求1~100(含100)的偶數之和21.正確22.正確23.錯誤24.錯誤25.正確26.num=0 a[i]==1或其他等價答案 num+=a[i]或num=num+a[i] 827.range(a,b+1) i%2==128.6 i=0 flag=-1 num*10+int(s[j]) i=j-129.plt.plot(x,y) import numpy as np30.s<12000 第i年之后枚舉法 10000 s*1.02 或 s*(1+0.02)31.import matha=16b=math. sqrt(a)c=a*bprint(c)32.a="國泰與"b="民安"c=a+bd=c[3]print(d)33.List 和tuple 區別不同點:1 定義的方式list[] tuple()2 是否可變list可變 tuple() 不可變3 list中有 append(),insert() 函數,tuple中沒有相同點: 都是有序的集合(容器)List轉為tuple:temp_list = [1,2,3,4,5]將temp_list進行強制轉換:tuple(temp_list)tuple 轉為list:temp_tuple = (1,2,3)方法類似,也是進行強制轉換即可:list(temp_tuple)34.x=int(input("請輸入一個年份(四位數):"))if x%400==0: print("{}年是閏年".format(x))elif x%4==0 and x%100!=0: print("{}年是閏年".format(x))else:print("{}年不是閏年".format(x))35.score=eval(input("請輸入你的分數:"))if score>=90: print("等級為優")elif 80<=score<90: print("等級為良")elif 70<=score<80: print("等級為中")elif 60<=score<50: print("等級為及格")else: print("等級為不及格") 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫