我的GPA计算器一直出现错误,该计算器应根据4个等级计算出您的GPA。每当输入一个名为A,B,C,D,F的字母时,程序需要终止,我不知道该怎么做。
def GetName():
name = raw_input ("Enter the student's name ")
grade1 = raw_input ("Enter a grade: ")
grade2 = raw_input ("Enter a grade: ")
grade3 = raw_input ("Enter a grade: ")
grade4 = raw_input ("Enter a grade: ")
return name, grade1, grade2, grade3, grade4
def GetGrades(grade1, grade2, grade3, grade4):
if [grade1, grade2, grade3, grade4] == 'A' or [grade1, grade2, grade3, grade4] == 'a':
[g1, g2, g3, g4] =4
elif [grade1, grade2, grade3, grade4] == 'B' or [grade1, grade2, grade3, grade4] == 'b':
[g1, g2, g3, g4] =3
elif [grade1, grade2, grade3, grade4] == 'C' or [grade1, grade2, grade3, grade4] == 'd':
[g1, g2, g3, g4] =2
elif [grade1, grade2, grade3, grade4] == 'D' or [grade1, grade2, grade3, grade4] == 'd':
[g1, g2, g3, g4] =1
elif [grade1, grade2, grade3, grade4] == 'F' or [grade1, grade2, grade3, grade4] == 'f':
[g1, g2, g3, g4] =0
else:
return 'invalid grade'
return g1, g2, g3, g4
def CalcGPA(g1,g2,g3,g4):
GPA = (g1,g2,g3,g4)/4
return GPA
def main(name, GPA):
print "The GPA for", name,"is",GPA
return 0
GetName()=name,grade1,grade2,grade3,grade4
GetGrades(grade1,grade2,grade3,grade4)=g1,g2,g3,g4
CalcGPA(g1,g2,g3,g4)=GPA
main(name,GPA)=0
答案 0 :(得分:1)
Python中的赋值将等号右侧的值分配给左侧的引用,因此您要解包的元组需要位于左侧。
def GetName():
name = raw_input("Enter the student's name ")
grade1 = raw_input("Enter a grade: ")
grade2 = raw_input("Enter a grade: ")
grade3 = raw_input("Enter a grade: ")
grade4 = raw_input("Enter a grade: ")
return name, grade1, grade2, grade3, grade4
grademap = { 'A': 4, 'B': 3, 'C': 2, 'D': 1 }
def grade2int(x):
try:
return grademap[x.upper()]
except KeyError:
raise Exception('invalid grade: ' + x)
def GetGrades(grades):
return map(grade2int, grades)
def CalcGPA(grades):
return sum(grades)/len(grades)
def main(name, GPA):
print "The GPA for", name, "is", GPA
return 0
if __name__ == '__main__':
name, grade1, grade2, grade3, grade4 = GetName()
grades = GetGrades([grade1, grade2, grade3, grade4])
GPA = CalcGPA(grades)
main(name, GPA)
答案 1 :(得分:0)
看起来有一些错误,这里有一些提示。
GetGrades中的第一个你的列表[grade1,grade2,grade3,grade4]永远不会等于'A'它只会等于一个列表,所以你必须重新考虑如何测试成绩。
其次你需要等级值的总和,并想要除以浮点数或python将删除小数(除非输入带有小数的g1-4)。
def CalcGPA(g1,g2,g3,g4):
GPA = sum(g1,g2,g3,g4)/4.0
return GPA
第三,错误来自您调用函数的语法 应该是:
name,grade1,grade2,grade3,grade4= GetName()
g1,g2,g3,g4=GetGrades(grade1,grade2,grade3,grade4)
GPA = CalcGPA(g1,g2,g3,g4)
0=main(name,GPA)
对于在输入无效成绩时结束程序,您可以考虑放入在毕业无效时结束的while循环。