为什么这个基本的GPA计算器返回一个键错误?

2024-10-01 17:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

Grade1 = input ('Grade for Class 1?')
Grade2 = input ('Grade for Class 2?')
Grade3 = input ('Grade for Class 3?')
Grade4 = input ('Grade for Class 4?')

Grades = (str(Grade1), str(Grade2), str(Grade3), str(Grade4))

def average(numbers):
    total= sum(numbers)
    return total/len(numbers)

def RealGPA(semestergrades):
    PointValues = {'A+': 4.2, 'A':4.0, 'A-': 3.7, 'B+': 3.3, 'B': 3.0, 'B-': 2.7, 'C+': 2.3, 'C':2.0, 'C-': 1.7, 'D+': 1.3, 'D': 1.0, 'D-': 0.7, 'F': 0.00}
    PointsEarned= []
    for Grade in Grades:
        Values=(PointValues[Grades])
        PointsEarned.append(Values)
return average(PointsEarned)

print (RealGPA(Grades))

如果您为所有输入键入A,它会显示“Key error:('A'、'A'、'A'、'A')——这很奇怪,因为'A'出现在PointValues中。我输入错误吗?你知道吗


Tags: forinputdefclassgradegradesaveragenumbers
3条回答

有一个小的打字错误。这个Values=(PointValues[Grades])就是Values=(PointValues[Grade])。而且函数名和变量名都应该是小写的。你知道吗

一个简单的打字错误-你写的是Grades,而不是Grade。你知道吗

还添加了一些其他更改(请参阅PEP8样式指南):

grade1 = input ('Grade for Class 1?')
grade2 = input ('Grade for Class 2?')
grade3 = input ('Grade for Class 3?')
grade4 = input ('Grade for Class 4?')

grades = (str(grade1), str(grade2), str(grade3), str(grade4))

def average(numbers):
    total = sum(numbers)
    return total/len(numbers)

def real_GPA(semestergrades):
    point_values = {'A+': 4.2, 'A':4.0, 'A-': 3.7, 'B+': 3.3, 'B': 3.0, 
                    'B-': 2.7, 'C+': 2.3, 'C':2.0, 'C-': 1.7, 'D+': 1.3, 
                    'D': 1.0, 'D-': 0.7, 'F': 0.00}
    points_earned = []
    for grade in grades:
        values = point_values[grade]
        points_earned.append(values)
return average(points_earned)

print(real_GPA(grades))

PointValues[Grades]PointValues字典中查找元组(str(Grade1), str(Grade2), str(Grade3), str(Grade4)),这显然会生成一个KeyError。你知道吗

也许你的意思是PointValues[Grade]。你知道吗

相关问题 更多 >

    热门问题