4.读取成绩文件grade.txt,自定义设计数据类型, (1)根据总评=0.7*期末+0.3*平时,计算出所有人成绩 (2)计算出不同教师的学生期末成绩平均分。
时间: 2024-10-17 15:07:52 浏览: 57
在Python中,我们可以创建一个自定义的数据类型,比如`Student`类,来表示学生的信息,包括姓名、教师和成绩等。首先,我们需要读取`grade.txt`文件,假设它是一个包含学生信息的CSV或文本文件,每行包含学生姓名、教师姓名和两门成绩(期末和平时)。
```python
class Student:
def __init__(self, name, teacher, final_exam, mid_term):
self.name = name
self.teacher = teacher
self.final_exam = float(final_exam)
self.mid_term = float(mid_term)
def load_students(file_path):
students = []
with open(file_path, 'r') as file:
lines = file.readlines()
for line in lines[1:]: # skip header if present
data = line.strip().split(',')
name, teacher, final_exam, mid_term = data
students.append(Student(name, teacher, final_exam, mid_term))
return students
def calculate_total_grades(students):
for student in students:
total_grade = 0.7 * student.final_exam + 0.3 * student.mid_term
print(f"{student.name} 的总评成绩为: {total_grade}")
def calculate_teacher_average(teacher, students):
teacher_scores = [student.final_exam for student in students if student.teacher == teacher]
if len(teacher_scores) > 0:
average = sum(teacher_scores) / len(teacher_scores)
print(f"教师{teacher}的学生期末平均分为: {average}")
else:
print(f"找不到教师{teacher}的学生")
# 读取文件并计算成绩
students = load_students('grade.txt')
calculate_total_grades(students)
# 计算不同教师的平均分
teachers = set([student.teacher for student in students])
for teacher in teachers:
calculate_teacher_average(teacher, students)
```
阅读全文