如何一次使用多个功能?

时间:2018-02-14 05:22:22

标签: python function global

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学分的课程。

我的代码中出错了什么?我试图让函数和文件本身包含任何打印或要求任何输入。

1 个答案:

答案 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