2016-07-25 14 views
-1
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」、「A」、「A」、「A」が入力されていると「キーエラー: POINTVALUES私が間違って入力をしていますなぜこの基本的なGPA電卓がKeyErrorを返すのですか?

+1

PointValues [Grades]はPointValuesでなければなりません[Grade] – Yegers

+0

あなたは 'RealGPA'関数で' semestergrades'引数を使用していません。ローカル変数の代わりにグローバルな 'Grades'タプルが使われます。 –

答えて

0

PointValues[Grades]は明らかにKeyErrorを生成PointValues辞書、中タプル(str(Grade1), str(Grade2), str(Grade3), str(Grade4))探し

おそらく、あなたはPointValues[Grade]を意味

0

シンプルタイプミス - 。?。。あなたはGradesを書かれていますの代わりに。

追加だけでなく他のいくつかの変更が(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)) 
0

小さなタイプミスがあります。このValues=(PointValues[Grades])Values=(PointValues[Grade])となります。また、関数名と変数名はすべて小文字にする必要があります。

関連する問題