文件中的成绩统计分析----Python

news/2025/2/14 5:51:13/

文件中的成绩统计分析

描述

现在一个包含若干学生学习成绩的文件,每位同学有4 门课程的成绩,按要求完成以下任务。

文件中每行数据格式如下:

0121801101266,刘雯,92,73,72,64

0121801101077,张佳喜,81,97,61,98

0121801101531,佘玉龙,73,89,81,93

读取附件文件中的数据,对数据进行处理,计算每个同学 4 门课程成绩的平均成绩,将平均成绩置于课程成绩后一列,按照平均分升序排序后输出。‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪

 根据以下输入要求,输出相应的数据:‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪

1.输出平均分最高的同学名字与平均成绩,名字与分数间用一个空格分隔;

2.‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪输出平均分最低的同学名字与平均成绩,名字与分数间用一个空格分隔;

3.输出按平均分从低到高的排序数据,要求每个数据之间以空格间隔,每行结尾无空格。

4.‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪‪输入一个学生的名字,输出该名同学所在行的的全部数据,各数据项间用一个空格分隔,结尾无空格;‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪

5.如输入的姓名在文件中不存在,输出  '姓名不存在'

# 读取文件,将读取到的字符串,按逗号分割,形成一个新的列表并返回
def read(filename):with open(filename, 'r', encoding='utf-8') as fr:score_lst = []for line in fr:score_lst.append(line.strip().split(','))  # line.strip()去掉换行符,去掉换行符后变成了字符串return score_lst# 计算平均数并添加到列表中,返回包含平均数的新列表
def score_add_avg(score_lst):score_avg_lst = []for x in score_lst:avg = sum(map(int, x[2:])) / len(x[2:])x.append(avg)score_avg_lst.append(x)  # 将加了平均成绩的0列表加到新的列表return score_avg_lst# 将列表按照平均数的大小从低到高排序
def sort_score(sort_lst):sort_lst.sort(key=lambda x: x[6])return sort_lst# 3.输出按平均分从低到高的排序数据,要求每个数据之间以空格间隔,每行结尾无空格。
def output_all(sort_lst):for score in sort_lst:print(*score)  # *号进行解包# 4.输入一个学生的名字,输出该名同学所在行的的全部数据,各数据项间用一个空格分隔,结尾无空格;
def query_studeng(sort_lst, stu_name):for line in sort_lst:if stu_name in line:return lineelse:return Nonescore = read('6.5 score.txt')
score_with_avg = score_add_avg(score)
sorted_score = sort_score(score_with_avg)
print(sorted_score)
# 1.输出平均分最高的同学名字与平均成绩,名字与分数间用一个空格分隔;
print(sorted_score[-1][1], sorted_score[-1][6])
# 2.输出平均分最低的同学名字与平均成绩,名字与分数间用一个空格分隔;
print(sorted_score[0][1], sorted_score[0][6])
output_all(sorted_score)
student_name = input()
info = query_studeng(sorted_score, student_name)
if info:print(*info)
else:  # 5.如输入的姓名在文件中不存在,输出  '姓名不存在'print('姓名是不存在的')

 


http://www.ppmy.cn/news/5999.html

相关文章

36-Vue之ECharts高级-动画的使用

ECharts高级-动画的使用前言加载动画增量动画动画的配置前言 本篇来学习下ECharts中动画的使用 加载动画 showLoading() :显示加载动画,一般在获取图表数据之前 显示加载动画hideLoading():隐藏加载动画,在获取图表数据之后 隐…

Allegro如何更改铜皮的网络操作指导

Allegro如何更改铜皮的网络操作指导 在做PCB设计的时候需要更改铜皮的网络,Allegro上可以快速的更改铜皮的网络。如下图,需要给铜皮赋上网络 具体操作如下 选择selcet shape命令选中铜皮

音频怎么转换成文字?推荐这几个转文字的方法给你

在平时的工作中大家通常会先利用录音工具将会议内容录制下来,结束以后再根据录音来整理会议纪要,但一边听音频一边整理的操作既麻烦又费时间,还有可能会因为讲述的人语速快,而漏掉一些内容,从而导致效率不高&#xff0…

在Android端集成OpenCV的三种方式

1.Opencv Android SDK 基于Opencv C本地代码,通过Java语言接口使用JNI技术调用C本地方法的SDK开发包。 (1)etc:各类模型文件存储地址 (2)java:Java版本的Android SDK相关文件 (3)native:JNI层…

求N!后面有多少个连续的零

Description 给出一个数字N,求N的阶乘&#xff0c;其右边有多少个连续的零。 例如5&#xff01;120&#xff0c;其右边有1个零。 Format Input 每行一个数字N&#xff0c;1 < N < 1000000000. Output 每行一个数字。 Samples 输入数据 1 100Copy 输出数据 1 2…

图书管理系统【Servlet+HTML综合应用】

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

RabbitMQ如何确保消息发送和消息接收

RabbitMQ如何确保消息发送和消息接收: 消息发送确认&#xff1a; 1.ConfirmCallback方法 ConfirmCallback 是一个回调接口&#xff0c;消息发送到Broker后触发回调&#xff0c;确认消息是否到达Broker服务器&#xff0c;也就是只确认是否正确到达Exchange中 2.ReturnCallback…

【设计模式】我终于读懂了装饰者模式。。。

文章目录&#x1f451;星巴克咖啡订单项目&#xff08;咖啡馆&#xff09;&#x1f452;装饰者模式定义&#x1f45e; 装饰者模式解决星巴克咖啡订单&#x1f302;装饰者模式下的订单&#xff1a;2 份巧克力一份牛奶的 LongBlack&#x1f4bc;下面我们跟着代码debug下去看一下&…