python求解答每门课程的成绩分为五个等级:A,B,C,D,F(注意没有E)

每门课程的成绩分为五个等级:A,B,C,D,F(注意没有E),它们分别代表可以获得4,3,2,1,0个绩点。要求初始化一个由大写字母构成的列表L,请你计算平均绩点,保留小数点后两位。若L中包含非法成绩等级,则输出-1。如:L=["A","B","C","D","F"],则输出2.00。

首先,我们需要定义一个字典,它将每个成绩等级映射到相应的绩点。然后,我们可以遍历输入的列表,检查每个元素是否是有效的成绩等级。如果是,我们将相应的绩点加入到一个总和中。最后,我们将这个总和除以列表的长度,得到平均绩点。

以下是一个实现这个功能的示例代码:

def calculate_gpa(grades):
grade_to_points = {"A": 4, "B": 3, "C": 2, "D": 1, "F": 0} # 定义成绩等级对应的绩点
total_points = 0 # 初始化总绩点为0
for grade in grades: # 遍历列表中的每一个成绩等级
if grade in grade_to_points: # 如果成绩等级是有效的
total_points += grade_to_points[grade] # 将对应的绩点加入到总绩点中
else: # 如果成绩等级是无效的
return -1 # 返回-1
# 计算并返回平均绩点,保留小数点后两位
return "{:.2f}".format(total_points / len(grades)) if len(grades) > 0 else -1

# 测试函数
L = ["A","B","C","D","F"]
print(calculate_gpa(L)) # 输出: 2.00

注意,这个函数会返回一个字符串,而不是一个浮点数,这是因为我们希望结果保留两位小数。如果列表为空,函数将返回-1,表示无法计算平均绩点。