python 假设当前目录下有一个文件名为class_score.txt的文本文件,存放着某班学生的学号(第1列)、语文成绩(第2列)和数学成绩(第3列),以空格分割各列数据。请编写程序完成下列要求: (1)分别求出这个班语文成绩和数学成绩的平均分(保留1位小数)并输出。 (2)找出这个班两门课都不及格(<60)的学生,输出这些学生的学号、语文成绩和数学成绩。 (3)找出这个班两门课的平均成绩为优秀(≥90分)的学生,输出这些学生的学号、语文成绩、数学成绩和平均成绩。程序运行效果如图所示。 图片描述
时间: 2023-11-04 12:15:10 浏览: 285
好的,这是一个关于Python处理文本文件的问题。以下是代码实现:
```python
# (1)分别求出这个班语文成绩和数学成绩的平均分(保留1位小数)并输出。
with open('class_score.txt', 'r') as f:
lines = f.readlines()[1:] # 跳过文件头
chinese_scores = []
math_scores = []
for line in lines:
data = line.split()
chinese_scores.append(float(data[1]))
math_scores.append(float(data[2]))
chinese_avg = round(sum(chinese_scores) / len(chinese_scores), 1)
math_avg = round(sum(math_scores) / len(math_scores), 1)
print(f'语文平均分:{chinese_avg},数学平均分:{math_avg}')
# (2)找出这个班两门课都不及格(<60)的学生,输出这些学生的学号、语文成绩和数学成绩。
with open('class_score.txt', 'r') as f:
lines = f.readlines()[1:] # 跳过文件头
for line in lines:
data = line.split()
if float(data[1]) < 60 and float(data[2]) < 60:
print(f'学号:{data[0]},语文成绩:{data[1]},数学成绩:{data[2]}')
# (3)找出这个班两门课的平均成绩为优秀(≥90分)的学生,输出这些学生的学号、语文成绩、数学成绩和平均成绩。
with open('class_score.txt', 'r') as f:
lines = f.readlines()[1:] # 跳过文件头
for line in lines:
data = line.split()
avg = (float(data[1]) + float(data[2])) / 2
if avg >= 90:
print(f'学号:{data[0]},语文成绩:{data[1]},数学成绩:{data[2]},平均成绩:{round(avg, 1)}')
```
注:代码中的`round()`函数用于保留小数点后1位。
阅读全文