版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年全国计算机等级考试二级Python项目实战冲刺试卷考试时间:______分钟总分:______分姓名:______第一部分:项目背景与需求假设你需要开发一个简单的学生成绩管理系统。该系统需要能够加载学生数据、展示学生列表、添加学生信息、删除学生信息以及计算并展示学生的平均成绩。学生信息包括:学号(字符串)、姓名(字符串)、成绩(浮点数)。第二部分:代码填空请根据以下项目需求,在指定的下划线处填入适当的代码,以完成学生成绩管理系统的核心功能。1.数据加载与存储首先,我们需要定义一个函数来加载学生数据。假设学生数据存储在一个名为`students.txt`的文本文件中,每行包含一个学生的学号、姓名和成绩,三者之间用逗号分隔。请完善`load_students`函数,使其从文件中读取数据,并将每个学生的信息存储在一个字典列表中,其中字典的键为`'id'`,`'name'`,`'score'`。如果文件不存在或读取出错,函数应返回一个空列表。```pythondefload_students(filename):students=[]try:withopen(filename,'r',encoding='utf-8')asf:forlineinf:_id,_name,_score=line.strip().split(',')_score=float(_score)students.append({'id':_id,'name':_name,'score':_score})except(FileNotFoundError,ValueError):passreturnstudents```2.显示学生列表```pythondefdisplay_students(students):ifnotstudents:print("Nostudentsdataavailable.")returnforstudentinstudents:print(f"{student['id']},{student['name']},{student['score']}")```3.添加学生信息定义一个函数`add_student`,接受学生信息字典(包含`'id'`,`'name'`,`'score'`)作为参数,并将其添加到学生列表中。如果学生列表尚未初始化(即为`None`),则应先初始化为空列表。函数执行完毕后,应返回更新后的学生列表。```pythondefadd_student(students,student_info):ifstudentsisNone:students=[]students.append(student_info)returnstudents```4.删除学生信息定义一个函数`delete_student`,接受一个学号`student_id`作为参数。函数应在学生列表中查找学号匹配的学生,并将其删除。如果找到并删除了学生,函数返回`True`;如果未找到,返回`False`。学生列表不应出现重复的学号。```pythondefdelete_student(students,student_id):fori,studentinenumerate(students):ifstudent['id']==student_id:delstudents[i]returnTruereturnFalse```5.计算平均成绩定义一个函数`calculate_average_score`,接受学生列表作为参数,计算所有学生的平均成绩,并返回该平均值。如果学生列表为空或不存在,函数应返回`0.0`。```pythondefcalculate_average_score(students):ifnotstudents:return0.0total_score=sum(student['score']forstudentinstudents)returntotal_score/len(students)```第三部分:代码完善下面提供了一个包含部分代码的`main`函数框架,用于演示如何使用前面定义的函数。请完善`main`函数中的`#TODO:Yourcodehere`部分,以实现完整的程序流程:1.调用`load_students`函数加载`students.txt`文件中的数据。2.调用`display_students`函数显示当前学生列表。3.提示用户输入要添加的学生信息(学号、姓名、成绩),然后调用`add_student`函数添加该学生,并再次调用`display_students`显示更新后的列表。4.提示用户输入要删除的学生学号,然后调用`delete_student`函数尝试删除该学生,并根据返回值打印相应的消息(如`"Studentdeletedsuccessfully."`或`"Studentnotfound."`)。之后再次调用`display_students`显示更新后的列表。5.调用`calculate_average_score`函数计算平均成绩,并打印消息`"Averagescoreis:{average}"`,其中`{average}`是计算得到的平均成绩。```pythondefmain():students=None#TODO:Yourcodehere#1.Loadstudentsdatastudents=load_students("students.txt")#2.Displaystudentsdisplay_students(students)#3.Addanewstudentprint("\nEnterdetailsforanewstudent(id,name,score):")new_id=input("EnterID:")new_name=input("EnterName:")try:new_score=float(input("EnterScore:"))students=add_student(students,{'id':new_id,'name':new_name,'score':new_score})print("\nUpdatedstudentlist:")display_students(students)exceptValueError:print("\nInvalidscoreinput.Studentnotadded.")#4.Deleteastudentprint("\nEntertheIDofthestudenttodelete:")del_id=input("EnterID:")ifdelete_student(students,del_id):print(f"\n'{del_id}'Studentdeletedsuccessfully.")else:print(f"\nStudentwithID'{del_id}'notfound.")print("\nUpdatedstudentlist:")display_students(students)#5.Calculateaveragescoreaverage=calculate_average_score(students)print(f"\nAveragescoreis:{average:.2f}")if__name__=="__main__":main()```第四部分:编程假设需要增加一个功能,允许用户根据学生姓名查询该学生的信息(学号、姓名、成绩)。如果找到匹配的学生,打印该学生的所有信息;如果未找到,打印`"Studentnotfoundbyname."`。请定义一个名为`find_student_by_name`的函数来实现此功能,并将其调用逻辑添加到`main`函数中,在添加学生信息之后、删除学生信息之前。```python#TODO:Definethefunctionfind_student_by_name#TODO:Addthecalltofind_student_by_nameinthemainfunctionappropriately```请实现上述函数,并修改`main`函数以包含对它的调用。试卷答案第一部分:代码填空1.数据加载与存储```pythondefload_students(filename):students=[]try:withopen(filename,'r',encoding='utf-8')asf:forlineinf:_id,_name,_score=line.strip().split(',')_score=float(_score)students.append({'id':_id,'name':_name,'score':_score})except(FileNotFoundError,ValueError):passreturnstudents#解析:此函数需要从文件读取学生数据。使用with语句确保文件正确打开和关闭。逐行读取,split(',')按逗号分割。将分割后的学号、姓名转换为字符串,成绩转换为浮点数,然后组成字典添加到列表。异常处理捕获文件不存在或成绩转换错误的异常,避免程序中断。```2.显示学生列表```pythondefdisplay_students(students):ifnotstudents:print("Nostudentsdataavailable.")returnforstudentinstudents:print(f"{student['id']},{student['name']},{student['score']}")#解析:检查学生列表是否为空。如果为空,打印提示信息。如果不空,遍历列表中的每个学生字典,按照学号、姓名、成绩的顺序打印,用逗号分隔。```3.添加学生信息```pythondefadd_student(students,student_info):ifstudentsisNone:students=[]students.append(student_info)returnstudents#解析:首先检查学生列表是否已初始化(是否为None)。如果未初始化,则创建一个空列表。然后将新的学生信息字典添加到列表末尾,并返回更新后的列表。```4.删除学生信息```pythondefdelete_student(students,student_id):fori,studentinenumerate(students):ifstudent['id']==student_id:delstudents[i]returnTruereturnFalse#解析:使用循环遍历学生列表,通过enumerate获取索引i和学生信息student。比较当前学生的学号与学生id。如果匹配,使用del语句删除索引为i的学生,并返回True表示删除成功。如果循环结束仍未找到,返回False表示未找到。```5.计算平均成绩```pythondefcalculate_average_score(students):ifnotstudents:return0.0total_score=sum(student['score']forstudentinstudents)returntotal_score/len(students)#解析:首先检查学生列表是否为空。如果为空,返回0.0。如果不空,使用列表推导式生成所有学生的成绩列表,然后使用sum()计算总分。最后用总分除以学生数量得到平均分。```第三部分:代码完善```pythondefmain():students=None#1.Loadstudentsdatastudents=load_students("students.txt")#2.Displaystudentsdisplay_students(students)#3.Addanewstudentprint("\nEnterdetailsforanewstudent(id,name,score):")new_id=input("EnterID:")new_name=input("EnterName:")try:new_score=float(input("EnterScore:"))students=add_student(students,{'id':new_id,'name':new_name,'score':new_score})print("\nUpdatedstudentlist:")display_students(students)exceptValueError:print("\nInvalidscoreinput.Studentnotadded.")#4.Deleteastudentprint("\nEntertheIDofthestudenttodelete:")del_id=input("EnterID:")ifdelete_student(students,del_id):print(f"\n'{del_id}'Studentdeletedsuccessfully.")else:print(f"\nStudentwithID'{del_id}'notfound.")print("\nUpdatedstudentlist:")display_students(students)#5.Calculateaveragescoreaverage=calculate_average_score(students)print(f"\nAveragescoreis:{average:.2f}")if__name__=="__main__":main()#解析:按顺序执行:加载数据->显示列表->添加学生(输入处理异常)->删除学生(判断结果)->显示列表->计算平均分并显示。这是典型的系统操作流程。```第四部分:编程1.定义函数`find_student_by_name````pythondeffind_student_by_name(students,name):forstudentinstudents:ifstudent['name']==name:returnstudentreturnNone#解析:定义函数接收学生列表和要查找的姓名。遍历列表,比较每个学生的姓名。如果找到匹配的姓名,返回该学生字典。如果遍历完都没找到,返回None。```2.修改`main`函数调用`find_student_by_name````pythondefmain():students=None#Loadstudentsdatastudents=load_students("students.txt")#Displaystudentsdisplay_students(students)#Addanewstudentprint("\nEnterdetailsforanewstudent(id,name,score):")new_id=input("EnterID:")new_name=input("EnterName:")try:new_score=float(input("EnterScore:"))students=add_student(students,{'id':new_id,'name':new_name,'score':new_score})print("\nUpdatedstudentlist:")display_students(students)exceptValueError:print("\nInvalidscoreinput.Studentnotadded.")#Findastudentbynameprint("\nEnterthenameofthestudenttofind:")search_name=input("EnterNa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南湘潭医卫职业技术学院招聘5人备考题库附参考答案详解(能力提升)
- 2026湖北武汉市三级医院招聘14人备考题库完整参考答案详解
- 2026贵州安顺三〇三医院招聘9人备考题库带答案详解(a卷)
- 2026浙江台州市第一人民医院招聘编外合同制人员5人备考题库含答案详解(培优b卷)
- 2026安徽长三角产业创新研究院人才招聘备考题库附答案详解(b卷)
- 2026广东广州市爱莎文华高中招聘备考题库及完整答案详解一套
- 2026内蒙古鄂尔多斯景泰艺术中学(普高)招聘教师3人备考题库带答案详解(综合卷)
- 2026中国科学院化学研究所怀柔研究中心招聘备考题库附参考答案详解(轻巧夺冠)
- 2026春季浙商银行校园招聘备考题库附参考答案详解(达标题)
- 2026福建南平市消防救援局招聘政府专职消防员19人备考题库带答案详解(考试直接用)
- 中国葡萄酒产区和企业-9
- 供应商声明书(REACH)
- 库房的管理制度
- GB/T 9797-2022金属及其他无机覆盖层镍、镍+铬、铜+镍和铜+镍+铬电镀层
- LY/T 1369-2011次加工原木
- GB/T 8642-2002热喷涂抗拉结合强度的测定
- GB/T 35010.3-2018半导体芯片产品第3部分:操作、包装和贮存指南
- GB/T 33365-2016钢筋混凝土用钢筋焊接网试验方法
- GB/T 17466.1-2008家用和类似用途固定式电气装置电器附件安装盒和外壳第1部分:通用要求
- 毫秒脉冲星及X-射线双星某些重要性质的理论解释课件
- 统编版下册《青蒿素:人类征服疾病的一小步》课件
评论
0/150
提交评论