2025年P(guān)ython程序設(shè)計(jì)-期末試題及答案_第1頁
2025年P(guān)ython程序設(shè)計(jì)-期末試題及答案_第2頁
2025年P(guān)ython程序設(shè)計(jì)-期末試題及答案_第3頁
2025年P(guān)ython程序設(shè)計(jì)-期末試題及答案_第4頁
2025年P(guān)ython程序設(shè)計(jì)-期末試題及答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2025年P(guān)ython程序設(shè)計(jì)-期末試題及答案一、單項(xiàng)選擇題(每題2分,共20分)1.以下關(guān)于Python變量作用域的描述,正確的是()A.函數(shù)內(nèi)部定義的變量一定是局部變量B.使用global關(guān)鍵字聲明的變量只能在函數(shù)外部修改C.嵌套函數(shù)中,內(nèi)層函數(shù)可以直接修改外層函數(shù)的非全局變量D.模塊級變量(全局變量)在函數(shù)內(nèi)部可以訪問,但修改時需要聲明2.執(zhí)行代碼`a=[i2foriinrange(5)ifi%2==0]`后,a的值是()A.[0,1,4,9,16]B.[0,4,16]C.[1,9]D.[0,2,4]3.以下可以作為字典鍵(key)的是()A.[1,2,3]B.(1,2,3)C.{1:2}D.{'a':1}4.執(zhí)行以下代碼,輸出結(jié)果是()```pythontry:x=1/0exceptZeroDivisionError:print("除零錯誤")else:print("無錯誤")finally:print("結(jié)束")```A.除零錯誤→結(jié)束B.除零錯誤→無錯誤→結(jié)束C.無錯誤→結(jié)束D.除零錯誤→無錯誤5.定義類`classA:deff(self):return1`,`classB(A):deff(self):returnsuper().f()+2`,則`B().f()`的結(jié)果是()A.1B.2C.3D.報(bào)錯6.關(guān)于提供器(Generator),以下描述錯誤的是()A.提供器表達(dá)式使用圓括號`()`,列表推導(dǎo)式使用方括號`[]`B.提供器可以逐個產(chǎn)生值,節(jié)省內(nèi)存C.提供器對象只能迭代一次D.提供器函數(shù)通過`return`返回值7.執(zhí)行`f=lambdax,y:xifx>yelsey`,`f(3,5)`的結(jié)果是()A.3B.5C.8D.報(bào)錯8.導(dǎo)入模塊時,若希望僅導(dǎo)入模塊中的`func`函數(shù),正確的語句是()A.importmodule.funcB.frommoduleimportfuncC.fromfuncimportmoduleD.importfuncfrommodule9.執(zhí)行`print(f"成績:{89.5:.1f}")`,輸出結(jié)果是()A.成績:89.5B.成績:89.50C.成績:89.5fD.成績:90.010.關(guān)于深拷貝和淺拷貝,以下說法正確的是()A.`copy.copy()`實(shí)現(xiàn)深拷貝,`copy.deepcopy()`實(shí)現(xiàn)淺拷貝B.淺拷貝會遞歸復(fù)制所有嵌套對象C.對于不可變對象(如元組),淺拷貝和深拷貝效果相同D.列表的`lst.copy()`方法是深拷貝二、填空題(每題3分,共15分)1.反轉(zhuǎn)列表`lst=[1,2,3]`的兩種方法是:`lst[::-1]`和__________。2.合并字典`d1={'a':1}`和`d2={'b':2}`,Python3.9+中可以使用__________語法(寫表達(dá)式)。3.定義類方法時,需要使用__________裝飾器(寫完整裝飾器名)。4.正則表達(dá)式`r'^1[3-9]\d{9}$'`用于匹配__________(填寫具體場景)。5.讀取JSON文件時,使用`json`模塊的__________函數(shù)(寫函數(shù)名)。三、編程題(共65分)1.(10分)編寫一個函數(shù)`fibonacci(n)`,返回斐波那契數(shù)列的第n項(xiàng)(n≥1)。要求同時實(shí)現(xiàn)遞歸和迭代兩種版本,并比較兩者在n=30時的執(zhí)行效率(需輸出執(zhí)行時間)。2.(15分)某班級學(xué)提供績數(shù)據(jù)如下(列表中的每個字典表示一個學(xué)生):`students=[{'name':'張三','math':85,'english':78,'chinese':92},{'name':'李四','math':92,'english':88,'chinese':85},{'name':'王五','math':75,'english':65,'chinese':80},{'name':'趙六','math':88,'english':95,'chinese':90}]`要求:(1)計(jì)算數(shù)學(xué)、英語、語文三科的平均分;(2)篩選出平均分大于85分的學(xué)生,組成新列表;(3)將篩選后的列表按數(shù)學(xué)成績降序排序。3.(15分)設(shè)計(jì)一個圖書管理系統(tǒng)的類結(jié)構(gòu),要求包含:`Book`類:屬性為ISBN(字符串)、書名(字符串)、作者(字符串)、庫存(整數(shù));`Library`類:方法包括添加圖書(`add_book(book)`)、刪除圖書(`remove_book(isbn)`)、按ISBN查詢圖書(`query_by_isbn(isbn)`)、顯示所有圖書信息(`show_all()`)。4.(15分)編寫程序,讀取當(dāng)前目錄下的`students.csv`文件(格式:姓名,數(shù)學(xué),英語,語文),處理以下需求:(1)若某科成績?nèi)笔В榭栈蚍菙?shù)字),則將該科成績設(shè)為0;(2)計(jì)算每個學(xué)生的總分(三科之和);(3)將處理后的學(xué)生數(shù)據(jù)按總分降序排序;(4)將結(jié)果寫入`processed_students.csv`文件(格式:姓名,數(shù)學(xué),英語,語文,總分)。5.(10分)編寫一個裝飾器`timer`,用于統(tǒng)計(jì)函數(shù)的執(zhí)行時間(單位:秒,保留4位小數(shù))。并使用該裝飾器裝飾一個計(jì)算大數(shù)階乘的函數(shù)`factorial(n)`(n≥1000),輸出執(zhí)行時間。答案一、單項(xiàng)選擇題1.D(解析:函數(shù)內(nèi)部若修改全局變量需用global聲明;嵌套函數(shù)修改外層變量需用nonlocal;函數(shù)內(nèi)部定義的變量在未聲明時是局部變量,但若使用global聲明則是全局變量)2.B(解析:range(5)提供0-4,篩選i%2==0即0、2、4,平方后為0、4、16)3.B(解析:字典鍵必須是不可變類型,元組是不可變的,列表、字典是可變的)4.A(解析:發(fā)生異常時執(zhí)行except塊,else塊不執(zhí)行,finally塊始終執(zhí)行)5.C(解析:super().f()調(diào)用父類A的f方法返回1,加2后為3)6.D(解析:提供器函數(shù)通過yield返回值,return會拋出StopIteration)7.B(解析:lambda函數(shù)返回較大值,5>3故返回5)8.B(解析:from...import用于導(dǎo)入模塊中的具體對象)9.A(解析:.1f表示保留1位小數(shù),89.5已有一位小數(shù),直接輸出)10.C(解析:不可變對象無需深拷貝,淺拷貝足夠;copy.copy是淺拷貝,deepcopy是深拷貝;列表的copy()是淺拷貝)二、填空題1.`lst.reverse()`(或`lst=lst[::-1]`,但題目要求方法,故填`lst.reverse()`)2.`d1|d2`3.`@classmethod`4.中國大陸手機(jī)號碼(11位,以13-19開頭)5.`load`三、編程題1.參考代碼:```pythonimporttime遞歸版本deffibonacci_recursive(n):ifn<=2:return1returnfibonacci_recursive(n-1)+fibonacci_recursive(n-2)迭代版本deffibonacci_iterative(n):ifn<=2:return1a,b=1,1for_inrange(3,n+1):a,b=b,a+breturnb效率比較n=30start=time.time()fibonacci_recursive(n)recursive_time=time.time()startstart=time.time()fibonacci_iterative(n)iterative_time=time.time()startprint(f"遞歸執(zhí)行時間:{recursive_time:.6f}秒")print(f"迭代執(zhí)行時間:{iterative_time:.6f}秒")```2.參考代碼:```pythonstudents=[{'name':'張三','math':85,'english':78,'chinese':92},{'name':'李四','math':92,'english':88,'chinese':85},{'name':'王五','math':75,'english':65,'chinese':80},{'name':'趙六','math':88,'english':95,'chinese':90}](1)計(jì)算各科平均分math_sum=sum(s['math']forsinstudents)english_sum=sum(s['english']forsinstudents)chinese_sum=sum(s['chinese']forsinstudents)count=len(students)math_avg=math_sum/countenglish_avg=english_sum/countchinese_avg=chinese_sum/countprint(f"數(shù)學(xué)平均分:{math_avg:.2f},英語平均分:{english_avg:.2f},語文平均分:{chinese_avg:.2f}")(2)篩選平均分>85的學(xué)生filtered=[]forsinstudents:avg=(s['math']+s['english']+s['chinese'])/3ifavg>85:filtered.append(s)(3)按數(shù)學(xué)成績降序排序filtered_sorted=sorted(filtered,key=lambdax:x['math'],reverse=True)print("篩選并排序后的學(xué)生:",filtered_sorted)```3.參考代碼:```pythonclassBook:def__init__(self,isbn,title,author,stock):self.isbn=isbnself.title=titleself.author=authorself.stock=stockclassLibrary:def__init__(self):self.books={}以ISBN為鍵存儲圖書defadd_book(self,book):ifbook.isbninself.books:print(f"ISBN{book.isbn}已存在,更新庫存...")self.books[book.isbn].stock+=book.stockelse:self.books[book.isbn]=bookdefremove_book(self,isbn):ifisbninself.books:delself.books[isbn]print(f"ISBN{isbn}刪除成功")else:print(f"ISBN{isbn}不存在")defquery_by_isbn(self,isbn):returnself.books.get(isbn,None)defshow_all(self):forbookinself.books.values():print(f"ISBN:{book.isbn},書名:{book.title},作者:{book.author},庫存:{book.stock}")```4.參考代碼:```pythonimportcsvdefprocess_students():讀取原始數(shù)據(jù)students=[]withopen('students.csv','r',encoding='utf-8')asf:reader=csv.DictReader(f)forrowinreader:name=row['姓名']math=row['數(shù)學(xué)']english=row['英語']chinese=row['語文']處理缺失或非數(shù)字成績math=int(math)ifmath.strip()andmath.isdigit()else0english=int(english)ifenglish.strip()andenglish.isdigit()else0chinese=int(chinese)ifchinese.strip()andchinese.isdigit()else0total=math+english+chinesestudents.append({'姓名':name,'數(shù)學(xué)':math,'英語':english,'語文':chinese,'總分':total})按總分降序排序students_sorted=sorted(students,key=lambdax:x['總分'],reverse=T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論