利用附件中的成绩数据进行成绩统计,根据总分进行升序排序后,输出总分最低分和最高分,按总分升序输出前n名同学和后n名同学成绩信息(n为非负数,当n大于数据行数时,按实际行数输出),输出每题的平均成绩。代码
时间: 2024-02-22 16:55:46 浏览: 65
成绩统计求平均分,并输出第一名信息
好的,这里是Python的代码实现:
```python
with open('scores.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
# 去掉表头
lines.pop(0)
# 统计总分和平均分
total_scores = []
average_scores = [0] * 6
for line in lines:
scores = line.strip().split(',')[1:]
total_score = sum(map(int, scores))
total_scores.append(total_score)
for i in range(len(scores)):
average_scores[i] += int(scores[i])
average_scores = [round(score / len(lines), 2) for score in average_scores]
# 排序并输出最高分和最低分
total_scores.sort()
print('最低分:', total_scores[0])
print('最高分:', total_scores[-1])
# 输出前n名和后n名同学的成绩信息
n = 5
if n > len(lines):
n = len(lines)
print('前%d名同学的成绩信息:' % n)
print('姓名\t总分')
for line in lines[:n]:
name, *scores = line.strip().split(',')
total_score = sum(map(int, scores))
print('%s\t%d' % (name, total_score))
print('后%d名同学的成绩信息:' % n)
print('姓名\t总分')
for line in lines[-n:]:
name, *scores = line.strip().split(',')
total_score = sum(map(int, scores))
print('%s\t%d' % (name, total_score))
# 输出每题的平均成绩
print('每题的平均成绩:')
print('题号\t平均分')
for i in range(6):
print('%d\t%.2f' % (i + 1, average_scores[i]))
```
这段代码中,我们首先使用 `readlines()` 方法读取了名为 `scores.txt` 的文件,并将每一行的内容存储在 `lines` 列表中。由于第一行是表头,我们使用 `pop()` 方法将其从列表中删除。
接着,我们遍历 `lines` 列表,对每一行的成绩进行统计。我们使用 `strip()` 方法去掉每一行字符串中的空白字符,并使用 `split()` 方法将每行成绩按逗号分隔开。然后,我们将每个学生的总分存储在 `total_scores` 列表中,并将每题的成绩累加到 `average_scores` 列表中。
接下来,我们使用 `sort()` 方法对 `total_scores` 列表进行排序,并输出最低分和最高分。
然后,我们输出前n名和后n名同学的成绩信息。如果输入的 n 大于数据行数,我们将 n 设置为实际行数。我们使用切片操作对 `lines` 列表进行截取,并逐行输出每个学生的姓名和总分。
最后,我们输出每题的平均成绩。我们遍历 `average_scores` 列表,并使用 `round()` 方法将每个平均分保留两位小数。然后,我们输出每题的编号和平均分。
阅读全文