2026年计算机编程题库Python编程语言进阶题目_第1页
2026年计算机编程题库Python编程语言进阶题目_第2页
2026年计算机编程题库Python编程语言进阶题目_第3页
2026年计算机编程题库Python编程语言进阶题目_第4页
2026年计算机编程题库Python编程语言进阶题目_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年计算机编程题库:Python编程语言进阶题目一、函数与模块编程(共3题,每题15分)1.题1(15分):编写一个Python函数,实现以下功能:-接收一个字符串参数,统计并返回该字符串中所有字母(区分大小写)、数字和特殊字符的数量。-要求:-使用`collections.Counter`模块进行计数。-若输入为空,返回`{"letters":0,"digits":0,"special":0}`。-示例输入:`"Hello2026!Python"`,输出:`{"letters":10,"digits":4,"special":2}`。2.题2(15分):设计一个自定义模块`utils.py`,包含以下函数:-`is_prime(n)`:判断整数`n`是否为质数,返回布尔值。-`factorize(n)`:返回`n`的质因数分解列表(如`factorize(30)`返回`[2,3,5]`)。-在主程序中导入该模块,测试`is_prime(17)`和`factorize(100)`的结果。3.题3(15分):实现一个装饰器`@timeout(seconds)`,用于限制函数执行时间。若超时则抛出`TimeoutError`,否则正常返回结果。-要求:-使用`signal`模块实现超时机制。-默认超时时间为5秒。-示例:`@timeout(2)`装饰一个耗时函数,若执行超过2秒则报错。二、面向对象编程(共2题,每题20分)1.题4(20分):设计一个类`Employee`,包含:-私有属性`__salary`(工资),初始化时必须输入。-公有方法`get_bonus()`:根据工资计算奖金(工资≥10000返10%,<10000返5%)。-静态方法`validate_salary(salary)`:检查输入工资是否为正数,否则抛出`ValueError`。-创建实例并测试`get_bonus()`和静态方法验证。2.题5(20分):实现一个`Stack`类,支持以下操作:-初始化为空栈。-`push(item)`:压入元素。-`pop()`:弹出栈顶元素(若为空栈则抛出`IndexError`)。-`peek()`:查看栈顶元素(不弹出)。-要求:使用列表实现,但不允许直接使用`list`的`pop(0)`,需自定义删除逻辑。三、文件与异常处理(共2题,每题20分)1.题6(20分):编写一个函数`process_file(path)`,处理CSV文件:-读取`path`指定的文件,每行按逗号分隔。-处理异常:-文件不存在则抛出`FileNotFoundError`。-数据格式错误(如某行数字不完整)则记录错误行号并继续处理。-返回处理后的数据列表和错误记录。-示例:处理`data.csv`,返回`[["name1","age1"],["name2","age2"]]`和`{2:"ageerror"}`。2.题7(20分):实现一个日志处理器`LogHandler`类,包含:-方法`write_log(message)`:将日志写入`logs.txt`,追加模式。-方法`read_logs()`:读取并返回所有日志内容。-处理异常:若文件操作失败则记录到`errors.txt`。四、高级数据结构(共2题,每题25分)1.题8(25分):实现一个`LRUCache`类,模拟LRU(最近最少使用)缓存:-初始化时指定容量`capacity`。-方法`get(key)`:返回`key`对应的值,若不存在则返回`-1`。-方法`put(key,value)`:添加或更新键值对,若超出容量则删除最久未使用的项。-使用双向链表和哈希表实现,确保`get`和`put`操作时间复杂度为O(1)。2.题9(25分):编写一个函数`merge_sorted_dicts(dicts)`,合并多个有序字典:-输入为多个有序字典(按key升序排列),返回一个合并后的有序字典。-要求:-若存在相同key,则值取第一个字典的值。-使用生成器实现高效合并。-示例:`merge_sorted_dicts({1:"a",2:"b"},{2:"c",3:"d"})`返回`{1:"a",2:"b",3:"d"}`。五、网络编程与API(共2题,每题25分)1.题10(25分):编写一个`fetch_weather(city)`函数,使用HTTP请求获取天气数据:-调用免费天气API(如OpenWeatherMap,需填入APIKey)。-返回JSON中的温度和天气描述(如`{"temp":25,"desc":"Sunny"}`)。-处理异常:网络错误、城市不存在则返回`None`。2.题11(25分):实现一个简单的HTTP服务器,包含以下路由:-`/hello`:返回`Hello,World!`。-`/echo`:返回请求中的`Content-Type`和`Message`。-使用`http.server`模块,自定义`HTTPServer`类。答案与解析题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)`统计所有字符频率。-通过`isalpha()`、`isdigit()`、`isalnum()`分类统计。-空字符串直接返回默认值。题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`使用试除法判断质数。-`factorize`通过连续除以最小质因数分解。题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)`设置超时。-若超时则触发`_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`私有属性防止外部直接访问。-静态方法用于验证。题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解析:-使用列表存储元素,`push`直接追加,`pop`删除最后一个。题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"}解析:-处理文件读写和每行分割,异常用字典记录。题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"解析:-日志追加和错误处理分离。题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解析:-双向链表维护顺序,哈希表记录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`库请求API,处理异常。题11(25分):pythonfromhttp.serverimportHTTPSer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论