无法在python程序中定义我的变量

无法在python程序中定义我的变量,python,Python,我需要制作一个函数,提供一个学期总结,其中包括所修课程、所修学分、GPA分数和学期GPA。我有第一个功能在工作 -gpacalc() 但是,当我尝试创建第二个函数时 -课程点(学分、年级) 当你输入一个班级的学分和收到的成绩时,它应该返回一个特定班级的“GPA分数”。 这就是我遇到问题的地方它说“gp”没有定义。我知道这是很多,但我认为这可能是一个简单的错误。我可能在跟踪我的变量,但我仍然不太清楚。如果你能帮忙,我很感激 # coursePoints requirement def course

我需要制作一个函数,提供一个学期总结,其中包括所修课程、所修学分、GPA分数和学期GPA。我有第一个功能在工作

-gpacalc()

但是,当我尝试创建第二个函数时

-课程点(学分、年级)

当你输入一个班级的学分和收到的成绩时,它应该返回一个特定班级的“GPA分数”。 这就是我遇到问题的地方它说“gp”没有定义。我知道这是很多,但我认为这可能是一个简单的错误。我可能在跟踪我的变量,但我仍然不太清楚。如果你能帮忙,我很感激

# coursePoints requirement
def coursePoints(credit, grade):
    gp = 0.00
    totalcredits = 0
    totalpoints = 0
    # I have lots of if statements here, I deleted them for simplicity.#
    gp = round(totalpoints,2)/round(totalcredits)

print("The GPA points of this class is:", round(gp))

coursePoints(3,"b")

您必须在
print上添加一个缩进(“该类的GPA点为:”,round(gp))
以使其位于函数
coursePoints()
的定义内

如果没有缩进,就好像您试图在文件中打印一个没有给定任何值、也没有声明的变量

此外,如果您在
coursePoints()
中输入“b”而不是“b”,则根据最后一行,它将返回0的GPA,因为您只指定了大写字母。或者,您可以使用[“B”,“B”]中的
if等级添加在if中分析bot字母的选项:
。或者一个更简单的解决方案是在
def课程点(学分,成绩):
的正下方添加
grade=grade.upper()
,并保持所有其他内容不变(wjandrea的道具)

代码的结尾应为:

[...]
    elif grade in ["D-","d-"]:
        totalpoints = totalpoints + (credit * .67)
        totalcredits = totalcredits + credit
    else:
        totalpoints = totalpoints + (credit * 0)
        totalcredits = totalcredits + credit
    gp = round(totalpoints,2)/round(totalcredits)
    # next line is indented now, thus, inside coursePoints()
    print("The GPA points of this class is:", round(gp))

coursePoints(3,"b") # change if condition for elif grade in ["B","b"]:

编辑:根据wjandrea的评论进行了更正和扩展。

您是否记得将“gp”声明为全局变量?为什么不从
coursePoints
返回
gp
,并打印函数调用的结果?结尾的
print()
行需要缩进,因此它是函数的一部分。顺便说一句,两个函数中都有一大块相同的代码,用于将字母等级转换为点,这一事实表明,您应该为该操作创建一个单独的函数。这一点很好。我将对其进行编辑,使其更加简化。更正:
在[“B”,“B”]
中评分。但是做grade.upper()='B'更容易。非常感谢。这么简单的解决方法。。。很好地理解了大写字母!在我的另一个函数中,我使用.upper()使它们成为大写字母。在这个函数中,我必须执行==[“b”,“d-”]。