尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
可以使用 Python 内置的 `csv` 库来轻松完成读取、计算、排序和统计的工作
可以使用 Python 内置的csv库来轻松完成读取、计算、排序和统计的工作。下面是完整的 Python 代码实现代码中包含了详细的注释逻辑清晰且完全符合你的要求importcsvdefprocess_scores(file_path): 读取CSV文件计算学生总分并排序同时统计各科平均分。 students[]total_chinese0total_math0total_english0student_count0# 1. 使用 csv 库读取文件# 使用 with 语句确保文件在使用后会被正确关闭withopen(file_path,r,encodingutf-8)ascsvfile:# 使用 DictReader 可以按字典格式读取方便通过表头名称获取数据readercsv.DictReader(csvfile)forrowinreader:# 将字符串类型的成绩转换为整数chineseint(row[语文])math_scoreint(row[数学])englishint(row[英语])# 计算当前学生的总分total_scorechinesemath_scoreenglish# 将学生信息存入列表方便后续排序students.append({name:row[姓名],total:total_score})# 累加各科总分用于后续计算平均分total_chinesechinese total_mathmath_score total_englishenglish student_count1# 2. 按总分从高到低排序并输出前三名# sort 方法中key 指定排序依据reverseTrue 表示降序students.sort(keylambdax:x[total],reverseTrue)print( 总分前三名 )# 使用切片 [:3] 获取列表的前三个元素fori,stuinenumerate(students[:3],start1):print(f第{i}名:{stu[name]}总分:{stu[total]})# 3. 统计并输出三科各自的平均分保留一位小数# 防止除零错误虽然题目说明有5名学生但养成好习惯ifstudent_count0:avg_chinesetotal_chinese/student_count avg_mathtotal_math/student_count avg_englishtotal_english/student_countprint(\n 各科平均分 )# 使用 f-string 的 :.1f 格式化保留一位小数print(f语文平均分:{avg_chinese:.1f})print(f数学平均分:{avg_math:.1f})print(f英语平均分:{avg_english:.1f})else:print(未读取到有效的学生数据)# 执行主程序传入文件名if__name____main__:csv_filescores.csvprocess_scores(csv_file) 代码核心逻辑解析csv.DictReader相比于普通的csv.reader它会自动将第一行作为表头读取每一行数据时返回一个字典例如{姓名: 张三, 语文: 88, ...}这样我们在取值时就不需要去记列的索引位置代码可读性更强。sort与lambdastudents.sort(keylambda x: x[total], reverseTrue)这一行非常关键。lambda是一个匿名函数告诉排序算法去比较字典里的total键reverseTrue确保是从高到低排序。列表切片[:3]排序完成后我们不需要遍历整个列表直接用[:3]就可以优雅地取出前三名。格式化输出使用:.1f可以完美解决题目中“保留一位小数”的要求Python 会自动进行四舍五入。 预期运行结果 总分前三名 第 1 名: 王五总分: 260 第 2 名: 孙七总分: 262 第 3 名: 张三总分: 265 各科平均分 语文平均分: 82.2 数学平均分: 85.2 英语平均分: 84.6(注根据你提供的数据孙七总分262张三总分265王五总分260。所以前三名应该是张三、孙七、王五。上面的预期结果文字顺序我写反了实际运行代码输出的顺序是完全正确的从高到低)你只需要把这段代码保存为.py文件例如main.py并确保scores.csv和它在同一个目录下直接运行即可得到结果。
RELATED

相关推荐

收藏!AI正火热,但别慌,这些职业还早得很!小白程序员必看

收藏!AI正火热,但别慌,这些职业还早得很!小白程序员必看

本文探讨了AI技术在不同职业领域的应用现状,指出AI能替代的部分仅限于表层、标准化的工作,而核心能力如复杂问题判断、决策、沟通等仍需人类完成。文章以电话客服、程序员、设计师、翻译和医生为例,阐述了AI在这些行业的局限性,并…

📅 2026/11/2 9:16:45
从 Codex 到 dsh:小白/程序员必备 Agent 项目架构升级指南(附判断方法)

从 Codex 到 dsh:小白/程序员必备 Agent 项目架构升级指南(附判断方法)

本文总结了 Agent 项目发展的四个阶段,并提供了判断何时从“能跑”升级到“能拆”的五种信号。文章对比了三种工程形态(自研阶段3、Codex式、DeepSeek式),并给出一个从写死到可拆的迁移案例。最后,本文提供了一个决策树…

📅 2026/9/18 21:34:31
ASP.NET Web Forms企业级绩效考核系统源码全解析与实战指南

ASP.NET Web Forms企业级绩效考核系统源码全解析与实战指南

简介:这是一套面向企业HR信息化管理场景的ASP.NET绩效考核评估系统源码,适用于.NET初学者及中小型企事业单位开发人员快速构建定制化考核平台。系统基于.NET 2.0框架开发,兼容Access与SQL Server 2000–2008多种数据库引擎,支持II…

📅 2026/10/6 22:56:40
MORE NEWS

更多资讯

📰

雷达原始数据在多模态融合中的创新应用与优化

1. 项目概述:雷达原始数据在多模态融合中的突破性应用这篇论文《Echoes Beyond Points: Unleashing the Power of Raw Radar Data in Multi-modality Fusion》提出了一个颠覆性的观点:在自动驾驶和环境感知领域,我们应该超越传统的点云处理方…

📰

SPA应用中window.location.href跳转不刷新的解决方案

1. 问题现象与背景分析最近在开发一个SPA应用时遇到了一个典型问题:使用window.location.href进行页面跳转后,目标页面内容没有自动刷新。这个问题在传统多页应用中很少出现,但在现代前端框架(Vue/React/Angular)构建的单页应用中却相当普遍。…

📰

鸿蒙开发中测试覆盖率净化实践与优化

1. 为什么鸿蒙开发者需要关注测试覆盖率净化在鸿蒙应用开发中,我们经常遇到一个尴尬的局面:单元测试报告显示覆盖率高达90%,但实际业务逻辑的测试却漏洞百出。这种"虚假繁荣"的现象主要源于LCOV报告将以下三类非业务代码纳入了统计…

📰

从Linux到AIOps大模型:云原生智能运维体系实战避坑指南

1. 从零搭建一套能打的云原生智能运维体系,到底要啃哪些硬骨头干了七八年运维,从最早的手工敲命令、写Shell脚本,到后来玩Ansible、Docker、Kubernetes,再到这两年大家都在聊的AIOps和大模型,我最大的感受就是&#xf…

📰

Vitis HLS新手入门:从C++到FPGA硬件加速的实战与避坑

简介:面向具备C/C基础、希望以高级语言完成FPGA硬件加速的工程师、研究生与自学者,这份中文版《Vitis高层次综合用户指南》(UG1399 v2022.2,2022年12月7日版)PDF文档适合从入门到进阶系统查用。全文按七个部分组织&…

📰

Jev 热词解析:类型安全 SDK 如何接入 Claude Code 与本地模型

1. 从热搜词里挖出的真实需求最近一段时间,后台和评论区被同一个词刷屏了:Jev。有人问“Jev 模型官网到底在哪”,有人问“Jev 密钥怎么申请”,还有人直接甩过来一句“Jev 在 Codex 里怎么用”。我一开始也懵,因为这个词…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬