首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPA Calc Python

GPA Calc Python
EN

Stack Overflow用户
提问于 2014-02-24 07:46:02
回答 2查看 9.4K关注 0票数 2

我不断得到一个错误的GPA计算器,它应该计算你的GPA基于4个等级。此外,每当输入一个不是A、B、C、D、F的字母时,程序都需要终止,我不知道该怎么做。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-24 07:54:41

Python中的赋值将等号右侧的值赋给左侧的引用,因此要解包的元组必须位于左侧。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-02-24 08:05:53

看起来有一些错误,这里有一些提示。

首先,在你的列表中,grade1,grade2,grade3,grade4永远不会等于'A‘,它只会等于一个列表,所以你必须重新考虑如何测试成绩。

其次,你需要成绩值的总和,并想除以一个浮点数,否则python会去掉小数(除非g1-4是用小数输入的)。

代码语言:javascript
复制
def CalcGPA(g1,g2,g3,g4):
    GPA = sum(g1,g2,g3,g4)/4.0
    return GPA

第三,错误来自如何调用函数的语法应该是:

代码语言:javascript
复制
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循环,该循环在grad无效时结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21976354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档