1.请编写Python程序完成以下要求: 当前工作目录下有一个文件名为class_score.txt的文本文件,存放着某班学生的姓名(第1列)、数学课成绩(第2列)和语文课成绩(第3列),每列数据用制表符(\t)进行分隔,文件内容如下所示: 请编程完成下列要求: (1)分别求这个班数学和语文的平均分(保留1位小数)并输出。 (2)找出两门课都不及格(<60)的学生,输出他们的学号和各科成绩。 (3)找出两门课的平均分在90分以上的学生,输出他们的学号和各科成绩。建议用三个函数分别实现以上要求。
时间: 2024-01-19 14:04:24 浏览: 79
用Python编程实现学生成绩管理,能按学期、按班级对学生成绩进行录入、修改、统计、查询和输出
好的,以下是Python程序实现:
```python
def read_file(file_name):
"""
读取文件内容,返回一个二维列表
"""
data = []
with open(file_name, 'r') as f:
lines = f.readlines()
for line in lines:
line = line.strip() # 去掉换行符
if not line: # 跳过空行
continue
row = line.split('\t') # 使用制表符分割
data.append(row)
return data
def calc_average(data, column):
"""
计算指定列的平均值
"""
total = sum([float(row[column]) for row in data])
return round(total / len(data), 1)
def find_failed_students(data):
"""
找出两门课都不及格的学生
"""
failed_students = []
for row in data:
if float(row[1]) < 60 and float(row[2]) < 60:
failed_students.append(row)
return failed_students
def find_top_students(data):
"""
找出两门课的平均分在90分以上的学生
"""
top_students = []
for row in data:
avg = (float(row[1]) + float(row[2])) / 2
if avg >= 90:
top_students.append(row)
return top_students
if __name__ == '__main__':
file_name = 'class_score.txt'
data = read_file(file_name)
# 计算平均分并输出
math_avg = calc_average(data, 1)
chinese_avg = calc_average(data, 2)
print(f'数学平均分:{math_avg},语文平均分:{chinese_avg}')
# 找出两门课都不及格的学生并输出
failed_students = find_failed_students(data)
if failed_students:
print('两门课都不及格的学生:')
for student in failed_students:
print(student)
else:
print('没有两门课都不及格的学生')
# 找出两门课的平均分在90分以上的学生并输出
top_students = find_top_students(data)
if top_students:
print('两门课的平均分在90分以上的学生:')
for student in top_students:
print(student)
else:
print('没有两门课的平均分在90分以上的学生')
```
在运行程序前,需要将class_score.txt文件放在当前工作目录下。运行程序后,会依次输出数学和语文的平均分,并输出两门课都不及格的学生以及两门课的平均分在90分以上的学生。
阅读全文