




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE1《Python程序設(shè)計》課程考試卷(A)答案課程代碼課程序號20xx——20xx學(xué)年第一學(xué)期姓名學(xué)號班級題號一二三四總分得分一、單選題(每小題2分,共計20分)1.B,2.C,3.B,4.A,5.D,6.C,7.A,8.D,9.D,10.B二、判斷題(每小題1分,共計10分)1.F2.T3.F4.T5.T6.F7.T8.F9.T10.F得分三、簡答題(每小題5分,共計20分)請解釋變量作用域的概念。局部變量和全局變量的區(qū)別是什么?答:(1)概念:作用域(scope)是程序中變量可被訪問的區(qū)域。Python遵循LEGB規(guī)則:Local(局部):函數(shù)或代碼塊內(nèi)部定義的變量;Enclosing(閉包):嵌套函數(shù)外層函數(shù)的變量;Global(全局):模塊頂層(文件最外層)定義的變量;Built-in(內(nèi)置):Python解釋器內(nèi)置的名稱,如len、list等。(2分)(2)局部變量vs.全局變量:局部變量在函數(shù)體內(nèi)定義,只能在函數(shù)運行期間訪問;調(diào)用結(jié)束后被銷毀,函數(shù)外不可見;全局變量在模塊最外層定義,可被模塊內(nèi)任意函數(shù)訪問;在函數(shù)內(nèi)部若要修改全局變量,需使用global聲明;(2分)(3)訪問優(yōu)先級:調(diào)用某個名稱時,Python按LEGB順序查找,找到第一個即停止。(1分)在Python面向?qū)ο缶幊讨?,self參數(shù)的作用是什么?為什么在定義類的方法時必須包含self參數(shù)?此外,什么是cls參數(shù),它與self有何不同?答:(1)self:實例方法的第一個參數(shù),指向調(diào)用該方法的實例本身,可通過self訪問或修改該實例的屬性和其他方法。Python不像某些語言隱式傳入this,因此在定義實例方法時必須顯式寫出self。(3分)(2)cls:類方法(使用@classmethod裝飾器)第一個參數(shù),指向當(dāng)前類,而不是實例;可通過cls訪問或修改類屬性、創(chuàng)建新實例(cls(...))。與self不同,cls方法不依賴于實例即可調(diào)用,通常用于工廠方法或操作全局類狀態(tài)。(2分)如何在NumPy中實現(xiàn)數(shù)組的索引和切片?與Python內(nèi)置的列表切片有何不同?舉例說明。答:(1)基本切片(slice):arr[start:stop:step],同Python列表,但NumPy切片返回的是視圖(view),而非拷貝;多維數(shù)組可寫成arr[行切片,列切片]。(1分)(2)高級索引:整數(shù)數(shù)組索引(fancyindexing):arr[[0,2,4],[1,3,0]];布爾索引:mask=arr>0;arr[mask]。(1分)(3)與列表切片差異:NumPy切片返回共享內(nèi)存的視圖,修改會反映到原數(shù)組;列表切片則總是生成新列表;支持多維切片與布爾索引;列表僅支持一維、基于整數(shù)的切片。(1分)(4)示例:importnumpyasnpa=np.arange(9).reshape(3,3)sub=a[0:2,1:3]#array([[1,2],[4,5]])sub[0,0]=99#會修改a[0,1]為99mask=a%2==0evens=a[mask]#選出所有偶數(shù)(2分)在Pandas中,什么是Series和DataFrame?請分別解釋它們的結(jié)構(gòu)和應(yīng)用場景。答:(1)Series:一維帶標(biāo)簽(Index)的數(shù)組,底層是一組值加上對應(yīng)的索引;適合表示時序數(shù)據(jù)、一列記錄等。importpandasaspds=pd.Series([10,20,30],index=['a','b','c'])(2分)(2)DataFrame:二維表格型數(shù)據(jù)結(jié)構(gòu),由多個Series組成,共享同一個行索引;每列可為不同數(shù)據(jù)類型,支持行列索引、對齊、分組聚合等操作。df=pd.DataFrame({'name':['Alice','Bob'],'age':[25,30]},index=['s1','s2'])(2分)(3)應(yīng)用場景:Series常用于時間序列、單變量統(tǒng)計;DataFrame適合Excel式的多字段表格數(shù)據(jù)處理,如數(shù)據(jù)清洗、合并、透視、繪圖等。(1分)四、編程題(每小題10分,共計50分)字典合并與求和。在數(shù)據(jù)處理中,常需要把兩份統(tǒng)計結(jié)果合并,對同一鍵進行累加。答:紅色斜體字體所示。defmerge_dicts(d1,d2):"""將兩個字典d1、d2合并:-若同一鍵同時出現(xiàn)在d1和d2中,值相加;-否則直接保留該鍵值對。返回合并后的新字典。"""result={}#BEGINIMPLEMENTATIONfork,vind1.items():result[k]=vfork,vind2.items():ifkinresult:___#將result[k]與v相加并更新else:___#將新的鍵值對加入result#ENDIMPLEMENTATIONreturnresult#測試數(shù)據(jù)a={'apple':3,'banana':5,'orange':2}b={'banana':4,'pear':7,'apple':1}print(merge_dicts(a,b))#預(yù)期輸出(順序不限):#{'apple':4,'banana':9,'orange':2,'pear':7}2.有一份用戶關(guān)注數(shù)據(jù)follows,表示A關(guān)注B,如('Alice','Bob')。請編寫函數(shù)統(tǒng)計每個用戶的粉絲列表和關(guān)注列表。答:紅色斜體字體所示。follows=[('Alice','Bob'),('Bob','Charlie'),('Alice','Charlie'),('David','Alice'),('Bob','Alice'),('Charlie','David')]defsummarize_follows(follows):"""輸入:列表of(follower,followee)輸出:twodicts:-followers:{user:setof粉絲}-followees:{user:setof關(guān)注的人}"""followers={}followees={}#請在下方實現(xiàn)統(tǒng)計邏輯#對于每個(follower,followee),#followers[followee].add(follower)#followees[follower].add(followee)#確保所有出現(xiàn)的用戶都有對應(yīng)的空集初始化foru,vinfollows:ifvnotinfollowers:followers[v]=set()ifunotinfollowees:followees[u]=set()followers[v].add(u)followees[u].add(v)#同時要保證被關(guān)注方也在followees字典中有鍵ifvnotinfollowees:followees[v]=set()#保證粉絲列表中所有follower也在followers中有鍵ifunotinfollowers:followers[u]=set()returnfollowers,followees#測試fans,cares=summarize_follows(follows)print(fans)print(cares)3.有一份服務(wù)器日志access.log,每行形如"2025-05-0412:00:00INFO/index.html"。請統(tǒng)計各類日志級別出現(xiàn)次數(shù)并寫入CSV。答:紅色斜體字體所示。importcsvdefsummarize_log(input_path,output_path):"""1.讀取input_path,每行以空格分割,第三個字段為級別(e.g.INFO,ERROR);2.統(tǒng)計各級別出現(xiàn)次數(shù),保存為dictlevel_counts;3.將結(jié)果寫入output_path(CSV),列頭:level,count。"""level_counts={}withopen(input_path,'r')asfin:forlineinfin:parts=line.strip().split()iflen(parts)<3:continuelevel=parts[2]level_counts[level]=level_counts.get(level,0)+1#寫入CSVwithopen(output_path,'w',newline='')asfout:writer=csv.writer(fout)writer.writerow(['level','count'])forlvl,cntinlevel_counts.items():writer.writerow([lvl,cnt])#假設(shè)access.log內(nèi)容:#2025-05-0412:00:00INFO/index.html#2025-05-0412:00:01ERROR/api/data#2025-05-0412:00:02INFO/login#2025-05-0412:00:03WARN/admin#2025-05-0412:00:04INFO/dashboardsummarize_log('access.log','summary.csv')4.設(shè)計基類Employee和子類Manager,Manager在work()方法中增加團隊規(guī)模信息。答:紅色斜體字體所示。classEmployee:def__init__(self,name,salary):=nameself.salary=salarydefwork(self):returnf"{}isworking."classManager(Employee):def__init__(self,name,salary,team_size):super().__init__(name,salary)self.team_size=team_sizedefwork(self):"""重寫父類work(),輸出:"{name}ismanagingateamof{team_size}people.""""#BEGINOVERRIDEreturnf"{}ismanagingateamof{self.team_size}people."#ENDOVERRIDE#測試e=Employee("Alice",70000)m=Manager("Bob",90000,5)print(e.work())#Aliceisworking.print(m.work())#Bobismanagingateamof5people.已收集每天的銷售數(shù)據(jù),需按月統(tǒng)計并繪制趨勢圖。答:紅色斜體字體所示。importpandasaspdimportmatplotlib.pyplotaspltsales=[{'date':'2025-01-10','amount':120},{'date':'2025-01-20','amount':150},{'date':'2025-02-05','amount':200},{'date':'202
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南路政管理辦法
- 中干考核管理辦法
- 體檢套餐管理辦法
- 上虞積分管理辦法
- 主副崗位管理辦法
- 東莞分紅管理辦法
- 供熱信息管理辦法
- 會議議事管理辦法
- 信息磁卡管理辦法
- 倉體稱重管理辦法
- 廉潔應(yīng)征承諾書
- 某有限公司人才引進管理辦法
- 全國城市一覽表-excel
- 樓宇自控施工與方案-
- 110KV電流互感器介質(zhì)損耗測量
- 巖石可鉆性測試實驗
- GB/T 1885-1998石油計量表
- GB 7231-2003工業(yè)管道的基本識別色、識別符號和安全標(biāo)識
- T-JSYLA 00007-2022 江蘇省智慧公園建設(shè)指南
- 輔酶Q10知識講座課件
- T-CCPITCSC 060-2020直播營銷人員職業(yè)能力要求
評論
0/150
提交評論