用python编写7.当前目录下有一个文件名为score1.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占30%、期末成绩占70%的比例计算总评成绩(取整数),并分学号、总评成绩两列写入另一文件score2.txt中。同时,在屏幕上输出学生总人数,按总评成绩计90分以上、80~89分、70~79分、60~69分、60分以下各成绩挡的人数和班级总平均分(取整数)。
时间: 2023-06-16 17:08:34 浏览: 1209
以下是代码实现:
```python
with open('score1.txt', 'r') as f1, open('score2.txt', 'w') as f2:
f2.write('学号\t总评成绩\n')
total_scores = []
num_above_90 = 0
num_80_89 = 0
num_70_79 = 0
num_60_69 = 0
num_below_60 = 0
num_students = 0
total_score = 0
for line in f1:
num_students += 1
student_info = line.split()
score = int(student_info[1]) * 0.3 + int(student_info[2]) * 0.7
total_scores.append(score)
total_score += score
if score >= 90:
num_above_90 += 1
elif score >= 80:
num_80_89 += 1
elif score >= 70:
num_70_79 += 1
elif score >= 60:
num_60_69 += 1
else:
num_below_60 += 1
f2.write(student_info[0] + '\t' + str(int(score)) + '\n')
avg_score = int(total_score / num_students)
print('总人数:', num_students)
print('90分以上的人数:', num_above_90)
print('80~89分的人数:', num_80_89)
print('70~79分的人数:', num_70_79)
print('60~69分的人数:', num_60_69)
print('60分以下的人数:', num_below_60)
print('班级总平均分:', avg_score)
```
代码说明:
首先我们用 with open 打开 score1.txt 文件,并指定读取模式('r'),然后用 with open 打开 score2.txt 文件,并指定写入模式('w')。在 score2.txt 文件中,我们首先写入表头:'学号\t总评成绩\n'。
接下来,我们创建一个空列表 total_scores,用来存放每个学生的总评成绩。同时,我们定义了 num_above_90、num_80_89、num_70_79、num_60_69 和 num_below_60 这五个变量,分别用来统计总评成绩在 90 分以上、80~89 分、70~79 分、60~69 分和 60 分以下的学生人数。我们还定义了 num_students 和 total_score 两个变量,分别用来统计学生总人数和班级总分数。
接下来,我们遍历 score1.txt 文件的每一行,将其按空格分割成一个列表 student_info。列表的第一个元素是学号,第二个元素是平时成绩,第三个元素是期末成绩。我们将平时成绩乘以 0.3,期末成绩乘以 0.7,然后将两者相加,得到总评成绩,并将其保存到 total_scores 列表中。我们也将总评成绩加到 total_score 中,以便计算班级总平均分。
根据总评成绩的大小,我们分别更新 num_above_90、num_80_89、num_70_79、num_60_69 和 num_below_60 这五个变量。同时,在 score2.txt 文件中写入学号和总评成绩,每个学生的信息占据一行。
最后,我们计算班级总平均分,并将 num_students、num_above_90、num_80_89、num_70_79、num_60_69、num_below_60 和 avg_score 分别输出到屏幕上。
阅读全文