def add_course(gc, course):
global gpacalc
global creditcalc
gpacalc = gpacalc + (gc * course)
creditcalc = (course + creditcalc)
def gpa():
return (gpacalc/creditcalc)
def credit_total():
return(creditcalc)
我正在尝试编写一个名为gpa.py的文件,该文件使用三个函数计算累积GPA:add_course分别为运行总计添加新课程,gpa和credit_total分别获得累计GPA和学分计数。我试图使用两个全局变量来跟踪GPA和信用(最初都是0)。
-Invoking gpa.add_course(3.7,3)应该将GPA 3.7的3学分课程添加到正在运行的GPA和学分计数总数中。 - 调用gpa.gpa()应检索您当前的总GPA。 -Invoking gpa.credit_total()应检索您当前获得的总积分。 - 仅使用一个参数(例如,gpa.add_course(3.7))来激活gpa.add_course应该添加一个3学分的课程。
我的代码中出错了什么?我试图让函数和文件本身包含任何打印或要求任何输入。
答案 0 :(得分:1)
您在代码中抛出了许多不符合预期的事情,因为Python以不同的方式解释事物。我建议您退一步并学习一些Python教程,例如learnpython.org,它将为您节省大量时间和麻烦。
考虑到你采取的方法,这里有一个有效的版本,对我改变的内容有一些评论。
gpacalc = 0
creditcalc = 0
# If you want the course argument to be optional,
# you need to provide a default value for it.
def add_course(gc, course = 3):
global gpacalc
global creditcalc
# += is the concise way to increment a value:
gpacalc += gc * course
creditcalc += course
def gpa():
# No need to use parenthesis for this return value
# unless you intend the result to be in tuple form.
return gpacalc/creditcalc
def credit_total():
# Same here, no need for parenthesis.
return creditcalc
add_course(3.7, 3)
print(gpa()) # 3.7000000000000006
print(credit_total()) # 3
add_course(3.7)
print(credit_total()) # 6