以下是一个示例代码,用于计算按类别加权成绩的问题。该示例假设有多个学生和多个类别。
def calculate_weighted_average(grades, weights):
weighted_sum = 0
total_weight = 0
for i in range(len(grades)):
weighted_sum += grades[i] * weights[i]
total_weight += weights[i]
if total_weight == 0:
return 0
return weighted_sum / total_weight
students = {
"Alice": [80, 90, 70], # 学生 Alice 的成绩列表,顺序为类别1、类别2、类别3
"Bob": [85, 75, 95], # 学生 Bob 的成绩列表
"Charlie": [90, 80, 85] # 学生 Charlie 的成绩列表
}
categories = {
"Category 1": 0.3, # 类别1 的权重
"Category 2": 0.4, # 类别2 的权重
"Category 3": 0.3 # 类别3 的权重
}
for student, grades in students.items():
weighted_average = calculate_weighted_average(grades, categories.values())
print(f"{student}'s weighted average: {weighted_average}")
这段代码首先定义了一个calculate_weighted_average
函数,该函数接收一个成绩列表和一个权重列表,并计算加权平均值。然后,我们创建了一个students
字典,其中包含每个学生的成绩列表。接下来,我们创建了一个categories
字典,其中包含每个类别的权重。最后,我们使用for
循环遍历学生字典,并对每个学生的成绩列表调用calculate_weighted_average
函数来计算加权平均值,并将结果打印出来。
请注意,以上只是一个示例,实际情况下根据具体需求可能需要进行适当的修改。