2025年最-新全国计算机等级考试(二级Python)上机试题与答案_第1页
2025年最-新全国计算机等级考试(二级Python)上机试题与答案_第2页
2025年最-新全国计算机等级考试(二级Python)上机试题与答案_第3页
2025年最-新全国计算机等级考试(二级Python)上机试题与答案_第4页
2025年最-新全国计算机等级考试(二级Python)上机试题与答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

2025年最新全国计算机等级考试(二级Python)上机试题与答案第一部分基本操作题(共3小题,每小题10分,合计30分)第1题请编写Python代码完成指定文件读写与排序统计需求:当前工作目录下存在“name_rank2024.txt”文件,该文件每行存储一条2024年国内新生儿热门姓名的统计记录,单条记录格式为“姓名,人数”,例如“梓轩,3276”。实现两个核心功能:第一,逐行读取该文件所有内容,过滤掉人数小于1000的无效记录,将剩余符合条件的记录按照人数从高到低降序排序,写入当前工作目录下的新文件“hot_name.txt”,新文件每行记录格式调整为“姓名:人数”;第二,统计所有原始记录中人数超过5000的热门姓名总个数,最终在控制台输出指定格式字符串“人数超5000的热门姓名共{}个”。参考答案:importosifnotos.path.exists("name_rank2024.txt"):raiseFileNotFoundError("源统计文件不存在")res_list=[]count_over_5000=0withopen("name_rank2024.txt","r",encoding="utf-8")asf:forlineinf:line=line.strip()ifnotline:continuename,num_str=line.split(",")num=int(num_str)ifnum>5000:count_over_5000+=1ifnum>=1000:res_list.append((name,num))res_list.sort(key=lambdax:-x[1])withopen("hot_name.txt","w",encoding="utf-8")asf:foriteminres_list:f.write(f"{item[0]}:{item[1]}\n")print(f"人数超5000的热门姓名共{count_over_5000}个")考点解析:本题覆盖2025版考纲要求的路径校验、文件上下文管理器操作、字符串分割、列表排序自定义规则四大核心考点,重点考察考生对中文文件读写乱码问题的规避能力,要求必须指定encoding参数为utf-8,不能依赖系统默认编码,避免Windows环境下GBK编码导致的运行报错。得分要点:源文件读取无遗漏、人数转换为整数类型未出现类型错误、排序规则符合降序要求、新文件格式完全匹配题目要求、控制台输出字符串格式无偏差。第2题已知列表nums已经通过语句nums=random.sample(range(1,1001),100)生成,列表内包含100个取值范围在1到1000之间的不重复随机整数。请编写代码完成序列处理需求:首先剔除列表中所有重复元素(尽管sample生成逻辑理论上无重复,但仍需通过代码完成去重逻辑实现),筛选出所有能同时被3和7整除的元素,将筛选后的结果转换为升序排列的新列表result,同时控制台打印输出筛选后所有元素的累加和。参考答案:nums_unique=list(set(nums))result=[iforiinnums_uniqueifi%3==0andi%7==0]result.sort()total_sum=sum(result)print(total_sum)考点解析:本题考察2025年考纲新增的生成式语法考点,对比往年仅要求用遍历循环实现筛选的要求,今年明确鼓励使用生成式简化代码,同时考察集合去重、内置sum函数调用、序列排序的基础操作。常见失分点:部分考生写筛选条件时误用逻辑或而非逻辑与,导致筛选出仅能被3或者仅能被7整除的元素,结果完全错误。得分要点:去重逻辑完整、筛选条件准确、排序为升序、累加和计算结果无误。第3题请使用turtle库编写绘图代码,绘制边长为100像素的正五边形,要求五个边的绘制颜色依次为红色、黄色、蓝色、绿色、紫色,正五边形的填充颜色设置为浅灰色,绘图完成后画布不自动关闭,需手动点击关闭后退出程序。参考答案:importturtleturtle.speed(5)#设置绘图速度为中等,避免过快看不清绘制过程turtle.fillcolor("lightgray")#指定填充颜色turtle.begin_fill()#开始填充color_list=["red","yellow","blue","green","purple"]foriinrange(5):turtle.pencolor(color_list[i])#设置当前边的颜色turtle.forward(100)#向前绘制100像素边长turtle.right(72)#正五边形外角为72度,右转72度turtle.end_fill()#结束填充turtle.done()#保持画布不自动关闭考点解析:本题为turtle库基础操作考点,2025年考纲保留了turtle基础绘图的考核权重,重点考察考生对正多边形角度计算、画笔颜色设置、区域填充、画布生命周期控制的理解。常见失分点:部分考生混淆正五边形内角和外角,错误将右转角度设置为108度,最终无法绘制出闭合的正五边形。第二部分简单应用题(共2小题,每小题20分,合计40分)第1题当前工作目录下存在“novel_excerpt.txt”文件,文件内容为中文小说节选,仅包含中文字符与中文标点符号,中文标点范围为【,。!?;:“”‘’()______】。请定义一个名为count_char_freq的函数,函数接收文件路径作为唯一输入参数,实现如下三个功能:第一,过滤掉文件内容中所有指定的中文标点符号,剩余内容仅保留中文字符;第二,以单个汉字为统计单位,统计每个汉字在文本中的出现频次;第三,将统计结果按照频次从高到低排序,返回频次最高的前10个汉字,返回值格式为包含10个(汉字,频次)元组的列表。参考答案:defcount_char_freq(file_path):filter_punc=set(",。!?;:“”‘’()______")freq_dict={}withopen(file_path,"r",encoding="utf-8")asf:content=f.read()forcincontent:ifcinfilter_punc:continuefreq_dict[c]=freq_dict.get(c,0)+1sorted_res=sorted(freq_dict.items(),key=lambdax:-x[1])returnsorted_res[:10]考点解析:本题覆盖函数封装、字典操作、自定义排序、文本清洗四大考点,是2025年上机考试出现频率最高的题型之一,重点考察考生对字典get方法的灵活运用,避免通过多层if判断判断键是否存在的冗余写法。常见失分点:未指定文件读取编码为utf-8导致中文乱码、排序时未使用负号实现降序导致结果为频次升序排列、过滤标点时存在遗漏将部分标点纳入统计范围。得分要点:函数定义参数与返回值完全符合要求、标点过滤无遗漏、词频统计逻辑无错误、排序规则符合要求、返回前10条结果格式正确。第2题请编写完整的交互程序,实现用户输入日期的合法性校验与计算功能:用户从控制台输入一个8位的日期字符串,格式要求为YYYYMMDD,例如20250315,程序需要实现三层校验逻辑:第一,首先判断用户输入的内容长度是否为8,是否全部由数字字符组成,不符合则直接提示“输入格式错误,请输入8位数字日期”;第二,通过datetime库将合法格式的字符串转换为日期类型,判断该日期是否为日历上存在的合法日期,例如20250230属于无效日期,格式符合要求但实际不存在,此类情况需要提示“无效日期,请重新输入”;第三,针对通过全部校验的合法日期,计算该日期是所属年份的第几天,同时判断该年份是否为闰年,最终控制台按照指定格式输出结果:“该日期为YYYY年MM月DD日,是当年第XX天,该年份是/不是闰年”。参考答案:fromdatetimeimportdatetimeinput_str=input("请输入8位数字格式的日期:").strip()iflen(input_str)!=8ornotinput_str.isdigit():print("输入格式错误,请输入8位数字日期")else:try:date_obj=datetime.strptime(input_str,"%Y%m%d")day_of_year=date_obj.timetuple().tm_ydayyear=date_obj.yearmonth=date_obj.monthday=date_obj.dayis_leap=(year%4==0andyear%100!=0)or(year%400==0)leap_str="是闰年"ifis_leapelse"不是闰年"print(f"该日期为{year}年{month}月{day}日,是当年第{day_of_year}天,该年份{leap_str}")exceptValueError:print("无效日期,请重新输入")考点解析:本题是2025年考纲新增的datetime库考核核心题型,重点考察异常捕获的实际应用,避免考生硬编码所有合法日期判断逻辑的冗余写法,通过strptime方法自动捕获ValueError异常实现非法日期判断,代码简洁度与容错性远高于手动判断的实现方案。常见失分点:闰年判断逻辑写反、错误使用input输入后未做strip处理导致包含空格的合法输入直接判定为格式错误、未捕获ValueError异常导致非法日期输入直接程序崩溃。第三部分综合应用题(共1小题,30分)某城市文旅局2024年景区游客接待统计数据存储在当前工作目录下的“tourist_data.csv”文件中,该CSV文件共有16列,第一行为表头行,表头字段依次为:景区ID、景区名称、所属区县、景区等级、1月接待量、2月接待量、3月接待量、4月接待量、5月接待量、6月接待量、7月接待量、8月接待量、9月接待量、10月接待量、11月接待量、12月接待量,所有1-12月的接待量字段取值均为正整数,单位为“人次”。请编写Python代码完成以下全部指定功能,所有步骤必须实现且运行逻辑正确:第一,读取该CSV文件,跳过第一行表头,将所有景区记录存储为嵌套列表格式,其中12个月份的接待量字段全部转换为整数类型;第二,为每条景区记录新增“年接待总量”字段,计算规则为12个月的接待量求和后除以10000,单位转换为“万人次”,结果保留1位小数;第三,筛选出所有景区等级为“5A”且年接待总量超过100万人次的景区,将这些景区按照年接待总量从高到低降序排序,若两个景区的年接待总量完全相同,则按照景区名称的拼音首字母升序排列;第四,将筛选排序后的结果写入新的CSV文件“top_scenic.csv”中,新文件仅保留“景区名称”、“所属区县”、“年接待总量”三个字段,字符编码设置为utf-8-sig,避免Excel打开文件时出现中文乱码;第五,在控制台打印输出符合条件的景区总数量,以及所有符合条件景区的年接待总量之和,输出字符串格式为“2024年全市年接待量超100万的5A级景区共{}家,累计接待游客总量{}万人次”。参考答案:importcsvfrompypinyinimportlazy_pinyinall_scenic=[]withopen("tourist_data.csv","r",encoding="utf-8")asf:reader=csv.reader(f)next(reader)#跳过表头行forrowinreader:foriinrange(4,16):row[i]=int(row[i])total_year=sum(row[4:16])/10000row.append(round(total_year,1))all_scenic.append(row)filter_scenic=[]foriteminall_scenic:scenic_level=item[3]total=item[16]ifscenic_level=="5A"andtotal>100:filter_scenic.append(item)filter_scenic.sort(key=lambdax:(-x[16],"".join(lazy_pinyin(x[1]))))withopen("top_scenic.csv","w",encoding="utf-8-sig",newline='')asf:writer=csv.writer(f)writer.writerow(["景区

温馨提示

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

评论

0/150

提交评论