版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
phython期末考试试题及答案一、单项选择题(每题2分,共20分)1.执行`x=3.0`后,变量x的类型是()A.intB.floatC.complexD.bool2.现有列表`a=[1,2,3]`,执行`a.append([4,5])`后,`a`的结果是()A.[1,2,3,4,5]B.[1,2,3,[4,5]]C.[5,4,3,2,1]D.报错3.字典`d={'a':1,'b':2}`,执行`d.get('c',3)`的返回值是()A.NoneB.报错C.3D.'c'4.以下循环执行的次数是()```pythonforiinrange(1,10,3):print(i)```A.2次B.3次C.4次D.10次5.定义函数时,参数前加两个星号(``)表示()A.可变数量的位置参数B.可变数量的关键字参数C.必须传递的参数D.默认参数6.关于类的继承,以下说法正确的是()A.Python不支持多继承B.子类无法重写父类的方法C.子类可以通过`super()`调用父类方法D.类的构造方法必须命名为`init`7.执行以下代码,输出结果是()```pythontry:x=1/0exceptValueError:print("值错误")exceptZeroDivisionError:print("除零错误")```A.值错误B.除零错误C.无输出D.报错8.要导入`math`模块中的`sqrt`函数,正确的写法是()A.`importmath.sqrt`B.`frommathimportsqrt`C.`importsqrtfrommath`D.`frommathimport`9.提供器表达式`(i2foriin[1,2,3])`的输出类型是()A.列表B.元组C.提供器对象D.集合10.以下lambda表达式正确的是()A.`lambdax:x2ifx>0`B.`lambdax:x2`C.`lambda:print("test")`D.`lambdax,y=1:x+y`二、填空题(每空2分,共20分)1.字符串`"python"`的逆序切片表示为______。2.列表`a=[1,2,3]`,执行`a.insert(1,0)`后,`a`变为______。3.字典`d={'a':10,'b':20}`,通过______方法可以获取所有键值对的视图对象。4.定义函数时,若希望参数有默认值,需将其放在参数列表的______(填“前面”或“后面”)。5.类的实例方法的第一个参数通常命名为______,表示实例本身。6.异常处理中,无论是否发生异常都会执行的代码块是______(填关键字)。7.提供器函数中使用______关键字返回值。8.列表推导式`[iforiinrange(5)ifi%2==0]`的结果是______。9.模块被直接运行时,其`__name__`属性的值是______。10.正则表达式`r'\d{3}-\d{8}'`可以匹配的典型字符串是______(举例)。三、编程题(共60分)1.(10分)编写函数`calculate_bmi`,接收身高(米)和体重(千克)作为参数,返回BMI值并判断体型。BMI计算公式为:体重/身高的平方。体型标准:低于18.5为偏瘦,18.5-24为正常,24-28为超重,28及以上为肥胖。要求返回格式为字符串,例如“BMI=22.5,正常”。2.(12分)给定列表`nums=[15,8,23,4,17,12,9]`,完成以下操作:(1)筛选出所有偶数;(2)将筛选出的偶数按升序排序;(3)计算排序后偶数的平均值(保留2位小数);(4)输出结果格式为:“偶数列表:[...],平均值:...”。3.(14分)编写程序,读取当前目录下`data.txt`文件的内容(假设文件内容为英文单词,每行一个单词),统计每个单词出现的次数(不区分大小写),并将统计结果按次数从高到低排序后写入`result.txt`文件。要求:忽略空行和标点符号(仅保留字母)。4.(14分)设计一个`Student`类,满足以下要求:(1)类属性:`total_students`(记录学生总数,初始为0);(2)实例属性:`name`(姓名)、`age`(年龄)、`scores`(成绩字典,键为科目,值为分数);(3)实例方法`add_score`,用于添加或修改某科成绩;(4)实例方法`get_average`,返回该学生所有科目的平均成绩(保留2位小数);(5)类方法`get_total`,返回当前学生总数;(6)创建2个学生实例,分别添加成绩并输出平均成绩,最后输出总学生数。5.(10分)编写函数`find_max_subarray`,使用分治法求解数组的最大子数组和。例如,输入`[-2,1,-3,4,-1,2,1,-5,4]`,输出`6`(对应子数组`[4,-1,2,1]`)。答案一、单项选择题1-5:BBCBB6-10:CBBCD二、填空题1.`"python"[::-1]`2.`[1,0,2,3]`3.`items()`4.后面5.`self`6.`finally`7.`yield`8.`[0,2,4]`9.`'__main__'`10.如“123-45678901”三、编程题1.参考代码:```pythondefcalculate_bmi(height,weight):bmi=weight/(height2)ifbmi<18.5:status="偏瘦"elif18.5<=bmi<24:status="正常"elif24<=bmi<28:status="超重"else:status="肥胖"returnf"BMI={bmi:.1f},{status}"```2.参考代码:```pythonnums=[15,8,23,4,17,12,9]even_nums=[numfornuminnumsifnum%2==0]even_sorted=sorted(even_nums)average=sum(even_sorted)/len(even_sorted)ifeven_sortedelse0print(f"偶数列表:{even_sorted},平均值:{average:.2f}")```3.参考代码:```pythonimportrefromcollectionsimportdefaultdictword_counts=defaultdict(int)withopen("data.txt","r",encoding="utf-8")asf:forlineinf:line=line.strip().lower()ifnotline:continuewords=re.findall(r"[a-zA-Z]+",line)forwordinwords:word_counts[word]+=1sorted_counts=sorted(word_counts.items(),key=lambdax:(-x[1],x[0]))withopen("result.txt","w",encoding="utf-8")asf:forword,countinsorted_counts:f.write(f"{word}:{count}\n")```4.参考代码:```pythonclassStudent:total_students=0def__init__(self,name,age):=nameself.age=ageself.scores={}Student.total_students+=1defadd_score(self,subject,score):self.scores[subject]=scoredefget_average(self):ifnotself.scores:return0.0returnround(sum(self.scores.values())/len(self.scores),2)@classmethoddefget_total(cls):returncls.total_students测试代码s1=Student("张三",18)s1.add_score("数学",90)s1.add_score("英语",85)print(f"{}平均成绩:{s1.get_average()}")s2=Student("李四",19)s2.add_score("语文",88)s2.add_score("物理",92)s2.add_score("化学",89)print(f"{}平均成绩:{s2.get_average()}")print("总学生数:",Student.get_total())```5.参考代码:```pythondeffind_max_subarray(nums):defmax_crossing(nums,left,mid,right):left_sum=float("-inf")current_sum=0foriinrange(mid,left1,-1):current_sum+=nums[i]ifcurrent_sum>left_sum:left_sum=current_sumright_sum=float("-inf")current_sum=0foriinrange(mid+1,right+1):current_sum+=nums[i]ifcurrent_sum>right_sum:right_sum=current_sumreturnleft_sum+right_sumdefdivide_and_conquer(nums,left,right):ifleft==right:returnnums[left]mid=(left+right)//2max_left=divide_and_conquer(nums,left,mid)max_right
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论