用编辑软件创建文件score.txt,存放着某班学生的计算机课成绩(百分制),共有学号、平时成绩、期未成绩三列。请根据平时成绩占40%,期末成绩占60%的比例计算总评成绩,并分学号、总评成绩两列写入另一文件score.txt。同时在屏幕上输出学生总人数,按总评成绩计90以上、80~89,70~79、 60~69、60分以下各成绩档的人数和班级总平均分(取小数点后两位)。
时间: 2023-06-25 15:03:37 浏览: 519
我可以提供一个Python的解决方案,具体步骤如下:
1.创建score.txt文件,输入学生的学号、平时成绩、期末成绩,每行一条记录。
2.使用Python的文件读取功能,将score.txt文件读取到程序中。
3.对于每一条记录,根据平时成绩占40%、期末成绩占60%的比例计算总评成绩,并将学号和总评成绩存入一个列表中。
4.将列表按照总评成绩从高到低排序,并将学号和总评成绩分别写入一个新的文件score_new.txt中。
5.统计90以上、80~89、70~79、60~69、60分以下各成绩档的人数,并计算班级总平均分。
下面是Python代码实现:
```python
# 打开score.txt文件,读取学生信息
with open('score.txt', 'r') as f:
lines = f.readlines()
# 定义一个列表,存储学生的学号和总评成绩
students = []
# 计算总评成绩,并存入列表中
for line in lines:
stu = line.strip().split()
score = int(stu[1]) * 0.4 + int(stu[2]) * 0.6
students.append([stu[0], score])
# 按照总评成绩排序
students = sorted(students, key=lambda x: x[1], reverse=True)
# 将学号和总评成绩写入score_new.txt文件中
with open('score_new.txt', 'w') as f:
for stu in students:
f.write(stu[0] + ' ' + str(stu[1]) + '\n')
# 统计各成绩档的人数,并计算总平均分
count_90 = 0
count_80 = 0
count_70 = 0
count_60 = 0
count_60_below = 0
total_score = 0
for stu in students:
if stu[1] >= 90:
count_90 += 1
elif stu[1] >= 80:
count_80 += 1
elif stu[1] >= 70:
count_70 += 1
elif stu[1] >= 60:
count_60 += 1
else:
count_60_below += 1
total_score += stu[1]
average_score = total_score / len(students)
# 输出结果
print("90分以上的人数:", count_90)
print("80~89分的人数:", count_80)
print("70~79分的人数:", count_70)
print("60~69分的人数:", count_60)
print("60分以下的人数:", count_60_below)
print("班级总平均分:%.2f" % average_score)
```
注意事项:
1.文件名和路径需要根据实际情况进行修改。
2.本题只是一个简单的示例,实际应用中需要考虑更多的异常处理、文件格式等问题。
阅读全文