我有一个列表,其中包含不同的类(class)名称,后跟一个逗号,然后是成绩。
courses = ['COMP 1000,A+', "MATH 1000,A+", 'SCIE1000,B+"]
每次列表中出现成绩时,我都会将其更改为成绩点值并将其添加到不同的列表中。然后从那里我通过找到平均值来计算 GPA。我为此使用以下代码:
if any("A+" in n for n in courses):
grades.append(4.30)
if any("B+" in n for n in courses):
grades.append(3.30)
这对于每个等级重复一次的列表来说效果很好,但对于上面的类(class)列表,有两个 A+,但 4.30 只被添加一次。每次列表中有成绩时,是否有办法将 4.30 添加到新列表?
谢谢
最佳答案
你的做法是错误的。遍历类(class),以逗号分隔,并在字典中查找成绩到成绩点的转换(相当于其他语言中的 case
语句)。
courses = ['COMP 1000,A+', 'MATH 1000,A+', 'SCIE1000,B+']
grades = []
grade_to_grade_point = {
"A+": 4.30,
"B+": 3.30,
# ...
}
for course in courses:
course_name, grade = course.split(',')
grades.append(grade_to_grade_point[grade])
print(grades) # -> [4.3, 4.3, 3.3]
或者作为列表理解:
grades = [grade_to_grade_point[c.split(',')[1]] for c in courses]
关于python - If 语句在每次出现时重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59700127/