如何一次使用多个功能?

How to use multiple functions at once?

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)。

-调用 gpa.add_course(3.7, 3) 应将 GPA 3.7 的 3 学分课程添加到 运行 GPA 和学分总数中。 - 调用 gpa.gpa() 应该检索您当前的总 GPA。 - 调用 gpa.credit_total() 应该会检索您当前获得的总学分。 -仅使用一个参数调用 gpa.add_course(例如,gpa.add_course(3.7))应该添加一门 3 学分的课程。

我的代码哪里做错了?我试图让函数和文件本身都包含任何打印或要求任何输入。

您在代码中加入了很多行为与您预期不同的东西,因为 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