我的问题是,在尝试使用'def'关键字时,我最终得到的回溯是:
"nameError: name 'a' is not defined".
如果有人能解释这个错误,我将不胜感激。
编辑:感谢您的帮助
答案 0 :(得分:1)
错误发生在
行score = computegrade(a, b, c, d, e)
因为它引用了5个名为a
.. e
的变量,这些变量尚未定义(它们尚未在全局范围内分配值)。但是,对我来说,你的期望是他们从函数中获取它们的值,这在Python中是不正确的;括号内的内容只是函数的输入。
我相信你的computegrade
函数应该是一个有一个输入(一个参数)的算法 - 得分;和一个输出 - 与该分数对应的等级。在该函数中,您将得分作为与每个得分括号对应的1个字符字符串返回:
def computegrade(score):
if score >= 0.9:
return "A"
elif score >= 0.8:
return "B"
# ...
else:
return "E"
然后您可以将此功能用作
score = raw_input ("Please enter your score:")
score = float(score)
grade = computegrade(score)
print "Your grade is", grade
答案 1 :(得分:0)
参数基本上就是你给出的功能,以便它可以完成它的工作。在这种情况下,该功能需要一件事 - 用户输入的分数。然后它获取该分数并使用if语句,确定它的等级并返回它。在这种情况下,您的函数不需要知道a, b, c, d, e
是什么。 @Antti Haapala提供了很好的代码。返回某些东西是赋予功能价值的东西。当您说score = computegrade(score)
时,它会为函数提供score
,然后将得分等于您返回的内容。 Antti Haapala的代码有效,因为您不需要冗余的打印语句。换句话说,您在函数中打印A
,然后函数集score
等于A
,然后打印score
。