版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年計(jì)算機(jī)編程題庫(kù):Python編程語(yǔ)言進(jìn)階題目一、函數(shù)與模塊編程(共3題,每題15分)1.題1(15分):編寫(xiě)一個(gè)Python函數(shù),實(shí)現(xiàn)以下功能:-接收一個(gè)字符串參數(shù),統(tǒng)計(jì)并返回該字符串中所有字母(區(qū)分大小寫(xiě))、數(shù)字和特殊字符的數(shù)量。-要求:-使用`collections.Counter`模塊進(jìn)行計(jì)數(shù)。-若輸入為空,返回`{"letters":0,"digits":0,"special":0}`。-示例輸入:`"Hello2026!Python"`,輸出:`{"letters":10,"digits":4,"special":2}`。2.題2(15分):設(shè)計(jì)一個(gè)自定義模塊`utils.py`,包含以下函數(shù):-`is_prime(n)`:判斷整數(shù)`n`是否為質(zhì)數(shù),返回布爾值。-`factorize(n)`:返回`n`的質(zhì)因數(shù)分解列表(如`factorize(30)`返回`[2,3,5]`)。-在主程序中導(dǎo)入該模塊,測(cè)試`is_prime(17)`和`factorize(100)`的結(jié)果。3.題3(15分):實(shí)現(xiàn)一個(gè)裝飾器`@timeout(seconds)`,用于限制函數(shù)執(zhí)行時(shí)間。若超時(shí)則拋出`TimeoutError`,否則正常返回結(jié)果。-要求:-使用`signal`模塊實(shí)現(xiàn)超時(shí)機(jī)制。-默認(rèn)超時(shí)時(shí)間為5秒。-示例:`@timeout(2)`裝飾一個(gè)耗時(shí)函數(shù),若執(zhí)行超過(guò)2秒則報(bào)錯(cuò)。二、面向?qū)ο缶幊蹋ü?題,每題20分)1.題4(20分):設(shè)計(jì)一個(gè)類(lèi)`Employee`,包含:-私有屬性`__salary`(工資),初始化時(shí)必須輸入。-公有方法`get_bonus()`:根據(jù)工資計(jì)算獎(jiǎng)金(工資≥10000返10%,<10000返5%)。-靜態(tài)方法`validate_salary(salary)`:檢查輸入工資是否為正數(shù),否則拋出`ValueError`。-創(chuàng)建實(shí)例并測(cè)試`get_bonus()`和靜態(tài)方法驗(yàn)證。2.題5(20分):實(shí)現(xiàn)一個(gè)`Stack`類(lèi),支持以下操作:-初始化為空棧。-`push(item)`:壓入元素。-`pop()`:彈出棧頂元素(若為空棧則拋出`IndexError`)。-`peek()`:查看棧頂元素(不彈出)。-要求:使用列表實(shí)現(xiàn),但不允許直接使用`list`的`pop(0)`,需自定義刪除邏輯。三、文件與異常處理(共2題,每題20分)1.題6(20分):編寫(xiě)一個(gè)函數(shù)`process_file(path)`,處理CSV文件:-讀取`path`指定的文件,每行按逗號(hào)分隔。-處理異常:-文件不存在則拋出`FileNotFoundError`。-數(shù)據(jù)格式錯(cuò)誤(如某行數(shù)字不完整)則記錄錯(cuò)誤行號(hào)并繼續(xù)處理。-返回處理后的數(shù)據(jù)列表和錯(cuò)誤記錄。-示例:處理`data.csv`,返回`[["name1","age1"],["name2","age2"]]`和`{2:"ageerror"}`。2.題7(20分):實(shí)現(xiàn)一個(gè)日志處理器`LogHandler`類(lèi),包含:-方法`write_log(message)`:將日志寫(xiě)入`logs.txt`,追加模式。-方法`read_logs()`:讀取并返回所有日志內(nèi)容。-處理異常:若文件操作失敗則記錄到`errors.txt`。四、高級(jí)數(shù)據(jù)結(jié)構(gòu)(共2題,每題25分)1.題8(25分):實(shí)現(xiàn)一個(gè)`LRUCache`類(lèi),模擬LRU(最近最少使用)緩存:-初始化時(shí)指定容量`capacity`。-方法`get(key)`:返回`key`對(duì)應(yīng)的值,若不存在則返回`-1`。-方法`put(key,value)`:添加或更新鍵值對(duì),若超出容量則刪除最久未使用的項(xiàng)。-使用雙向鏈表和哈希表實(shí)現(xiàn),確保`get`和`put`操作時(shí)間復(fù)雜度為O(1)。2.題9(25分):編寫(xiě)一個(gè)函數(shù)`merge_sorted_dicts(dicts)`,合并多個(gè)有序字典:-輸入為多個(gè)有序字典(按key升序排列),返回一個(gè)合并后的有序字典。-要求:-若存在相同key,則值取第一個(gè)字典的值。-使用生成器實(shí)現(xiàn)高效合并。-示例:`merge_sorted_dicts({1:"a",2:"b"},{2:"c",3:"d"})`返回`{1:"a",2:"b",3:"d"}`。五、網(wǎng)絡(luò)編程與API(共2題,每題25分)1.題10(25分):編寫(xiě)一個(gè)`fetch_weather(city)`函數(shù),使用HTTP請(qǐng)求獲取天氣數(shù)據(jù):-調(diào)用免費(fèi)天氣API(如OpenWeatherMap,需填入APIKey)。-返回JSON中的溫度和天氣描述(如`{"temp":25,"desc":"Sunny"}`)。-處理異常:網(wǎng)絡(luò)錯(cuò)誤、城市不存在則返回`None`。2.題11(25分):實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP服務(wù)器,包含以下路由:-`/hello`:返回`Hello,World!`。-`/echo`:返回請(qǐng)求中的`Content-Type`和`Message`。-使用`http.server`模塊,自定義`HTTPServer`類(lèi)。答案與解析題1(15分):pythonfromcollectionsimportCounterdefcount_chars(s):ifnots:return{"letters":0,"digits":0,"special":0}counter=Counter(s)letters=sum(vfork,vincounter.items()ifk.isalpha())digits=sum(vfork,vincounter.items()ifk.isdigit())special=sum(vfork,vincounter.items()ifnotk.isalnum())return{"letters":letters,"digits":digits,"special":special}示例print(count_chars("Hello2026!Python"))#{"letters":10,"digits":4,"special":2}解析:-`Counter(s)`統(tǒng)計(jì)所有字符頻率。-通過(guò)`isalpha()`、`isdigit()`、`isalnum()`分類(lèi)統(tǒng)計(jì)。-空字符串直接返回默認(rèn)值。題2(15分):`utils.py`:pythonimportmathdefis_prime(n):ifn<=1:returnFalseforiinrange(2,int(math.sqrt(n))+1):ifn%i==0:returnFalsereturnTruedeffactorize(n):factors=[]foriinrange(2,n+1):whilen%i==0:factors.append(i)n//=ireturnfactors解析:-`is_prime`使用試除法判斷質(zhì)數(shù)。-`factorize`通過(guò)連續(xù)除以最小質(zhì)因數(shù)分解。題3(15分):pythonimportsignalclassTimeoutError(Exception):passdeftimeout(seconds=5):defdecorator(func):def_handle_timeout(signum,frame):raiseTimeoutError(f"Functiontimedoutafter{seconds}seconds")signal.signal(signal.SIGALRM,_handle_timeout)defwrapper(args,kwargs):signal.alarm(seconds)try:result=func(args,kwargs)finally:signal.alarm(0)returnresultreturnwrapperreturndecorator示例@timeout(2)defslow_func():importtimetime.sleep(3)return"Done"解析:-`signal.alarm(seconds)`設(shè)置超時(shí)。-若超時(shí)則觸發(fā)`_handle_timeout`拋出異常。題4(20分):pythonclassEmployee:def__init__(self,salary):Employee.validate_salary(salary)self.__salary=salary@staticmethoddefvalidate_salary(salary):ifnotisinstance(salary,(int,float))orsalary<=0:raiseValueError("Salarymustbepositivenumber")defget_bonus(self):returnself.__salary0.1ifself.__salary>=10000elseself.__salary0.05示例e=Employee(12000)print(e.get_bonus())#1200.0解析:-`__salary`私有屬性防止外部直接訪問(wèn)。-靜態(tài)方法用于驗(yàn)證。題5(20分):pythonclassStack:def__init__(self):self._items=[]defpush(self,item):self._items.append(item)defpop(self):ifnotself._items:raiseIndexError("Popfromemptystack")returnself._items.pop()defpeek(self):ifnotself._items:raiseIndexError("Peekfromemptystack")returnself._items[-1]示例s=Stack()s.push(1);s.push(2)print(s.pop())#2print(s.peek())#1解析:-使用列表存儲(chǔ)元素,`push`直接追加,`pop`刪除最后一個(gè)。題6(20分):pythondefprocess_file(path):data=[]errors={}try:withopen(path,'r')asf:forline_num,lineinenumerate(f,1):try:parts=line.strip().split(',')data.append(parts)exceptExceptionase:errors[line_num]=str(e)exceptFileNotFoundError:raiseFileNotFoundError(f"File{path}notfound")returndata,errors示例print(process_file("data.csv"))#[{"name1","age1"},{"name2","age2"}],{2:"ageerror"}解析:-處理文件讀寫(xiě)和每行分割,異常用字典記錄。題7(20分):pythonclassLogHandler:def__init__(self,filename="logs.txt",error_file="errors.txt"):self.filename=filenameself.error_file=error_filedefwrite_log(self,message):try:withopen(self.filename,'a')asf:f.write(message+"\n")exceptException:self._write_error(f"Failedtowriteto{self.filename}")defread_logs(self):try:withopen(self.filename,'r')asf:returnf.read()exceptException:self._write_error(f"Failedtoreadfrom{self.filename}")return""def_write_error(self,msg):withopen(self.error_file,'a')asf:f.write(msg+"\n")示例lh=LogHandler()lh.write_log("Systemstarted")print(lh.read_logs())#"Systemstarted"解析:-日志追加和錯(cuò)誤處理分離。題8(25分):pythonclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headdef_remove_node(self,node):node.prev.next=node.nextnode.next.prev=node.prevdef_add_node(self,node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedefget(self,key):ifkeyinself.cache:node=self.cache[key]self._remove_node(node)self._add_node(node)returnnode.valuereturn-1defput(self,key,value):ifkeyinself.cache:self._remove_node(self.cache[key])node=Node(key,value)self.cache[key]=nodeself._add_node(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove_node(lru)delself.cache[lru.key]示例cache=LRUCache(2)cache.put(1,1)cache.put(2,2)print(cache.get(1))#1cache.put(3,3)#evictskey2print(cache.get(2))#-1解析:-雙向鏈表維護(hù)順序,哈希表記錄key。題9(25分):pythondefmerge_sorted_dicts(dicts):merged={}fordindicts:forkey,valueind.items():ifkeynotinmerged:merged[key]=valuereturndict(sorted(merged.items()))示例print(merge_sorted_dicts({1:"a",2:"b"},{2:"c",3:"d"}))#{1:"a",2:"b",3:"d"}解析:-遍歷所有字典,合并唯一key,最后排序。題10(25分):pythonimportrequestsdeffetch_weather(city,api_key="YOUR_API_KEY"):url=f"/data/2.5/weather?q={city}&appid={api_key}"try:response=requests.get(url,timeout=5)response.raise_for_status()data=response.json()return{"temp":data["main"]["temp"],"desc":data["weather"][0]["description"]}except(requests.RequestException,KeyError):returnNone示例print(fetch_weather("Beijing"))#{"temp":280.32,"desc":"Clearsky"}解析:-使用`requests`庫(kù)請(qǐng)求API,處理異常。題11(25分):pythonfromhttp.serverimportHTTPSer
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安吉人事考試及答案
- 2025年南京教招學(xué)前筆試真題及答案
- 2025年廣州商業(yè)銀行筆試及答案
- 2025年銀行筆試精算題及答案
- 2025年城投資本運(yùn)營(yíng)部筆試及答案
- 2025年廣實(shí)中學(xué)教師筆試及答案
- 2025年珠三角英語(yǔ)教師編制筆試及答案
- 2025年寶雞市事業(yè)單位工人考試及答案
- 美容院衛(wèi)生設(shè)備設(shè)施維護(hù)制度
- 乙型肝炎患者感染控制與隔離護(hù)理
- 挖機(jī)、裝載機(jī)三級(jí)安全教育試卷(附答案)
- 人機(jī)共智?創(chuàng)變未來(lái):千夢(mèng)引擎AI內(nèi)容營(yíng)銷(xiāo)白皮書(shū)
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)帶電作業(yè)機(jī)器人行業(yè)市場(chǎng)需求預(yù)測(cè)及投資規(guī)劃建議報(bào)告
- 2026年杭州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案解析
- 四川省瀘州市2025-2026學(xué)年高一上學(xué)期期末質(zhì)量監(jiān)測(cè)數(shù)學(xué)試題(含答案)
- 北京市豐臺(tái)區(qū)2026屆(年)高三年級(jí)(上)學(xué)期期末考試英語(yǔ)試題卷+答案
- 合伙公司退股協(xié)議書(shū)
- Ozon培訓(xùn)課件教學(xué)課件
- DB32-T 5320-2025 疾病預(yù)防控制機(jī)構(gòu)檢驗(yàn)檢測(cè)能力建設(shè)規(guī)范
- 2025年民航概論試題及答案判斷
- 46566-2025溫室氣體管理體系管理手冊(cè)
評(píng)論
0/150
提交評(píng)論