Python 如何在此实例中使用Assert?
我试图使用assert检查另一个函数是否正常工作 在这种情况下,我尝试测试的功能如下:Python 如何在此实例中使用Assert?,python,function,assert,Python,Function,Assert,我试图使用assert检查另一个函数是否正常工作 在这种情况下,我尝试测试的功能如下: def factorial(n): if type(n) != int or n < 0: raise ValueError, "\nThis error has been raised because the value inputted was either not an integer or negative." else: result =
def factorial(n):
if type(n) != int or n < 0:
raise ValueError, "\nThis error has been raised because the value inputted was either not an integer or negative."
else:
result = 1
for x in range(n):
result = result*(x+1)
print "\n", n, "factorial is:", result
n = input("\n\n Insert a non-negative integer to take the factorial of: ")
factorial(n)
然而,这返回了一个断言错误,尽管我已经用n=1手动检查了函数,它确实返回了1,所以它不应该因为条件为true而引发断言错误吗
有人能指出我为什么会出现断言错误吗
也可以使用assert检查raise ValueError段是否正确吗?您的函数似乎只需要打印结果,因此实际函数返回的是None,因此assert factorial1==1实际上被计算为assert None==1,这是失败的。从函数中返回一个值,断言将不再失败。您的函数似乎只需打印结果,因此实际函数返回的是None,因此assert factorial1==1实际上被计算为assert None==1,这将失败。从函数返回一个值,断言将不再失败。这里的问题是,您没有为断言函数返回一个值来检查阶乘函数返回的内容 这就是我所做的:为了测试,我只是添加了一个return语句来返回结果
>>> assert factorial(2)==1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert factorial(2)==2
>>> assert factorial(1)==1
def factorial(n):
if type(n) != int or n < 0:
raise ValueError, "\nThis error has been raised because the value inputted was either not an integer or negative."
else:
result = 1
for x in range(n):
result = result*(x+1)
return result
n = input("\n\n Insert a non-negative integer to take the factorial of: ")
这里的问题是,您没有为assert函数返回一个值来检查阶乘函数返回的内容 这就是我所做的:为了测试,我只是添加了一个return语句来返回结果
>>> assert factorial(2)==1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert factorial(2)==2
>>> assert factorial(1)==1
def factorial(n):
if type(n) != int or n < 0:
raise ValueError, "\nThis error has been raised because the value inputted was either not an integer or negative."
else:
result = 1
for x in range(n):
result = result*(x+1)
return result
n = input("\n\n Insert a non-negative integer to take the factorial of: ")
阶乘函数打印结果,但不返回结果。这就是断言失败的原因。试试这个:
def factorial(n):
if not isinstance(n, int):
raise ValueError('value must be an int')
if n < 0:
raise ValueError('n must be >= 0')
result = 1
for x in range(n):
result = result * (x + 1)
return result # <-- This is the magic line :)
阶乘函数打印结果,但不返回结果。这就是断言失败的原因。试试这个:
def factorial(n):
if not isinstance(n, int):
raise ValueError('value must be an int')
if n < 0:
raise ValueError('n must be >= 0')
result = 1
for x in range(n):
result = result * (x + 1)
return result # <-- This is the magic line :)
次要的旁白:异常消息是程序员看到的,而不是最终用户看到的。通常,它们不包含很多格式或构造,例如,出现这个错误是因为:异常消息是程序员看到的,而不是最终用户看到的。通常,它们不包含很多格式或构造,因为没有简单的基本方法来测试factorial-1,所以出现了这个错误?顺便说一下,谢谢你的帮助博士测试是最基本的方法。三行代码是最基本的:所以没有一个简单的测试factorial-1的基本方法?顺便说一下,谢谢你的帮助博士测试是最基本的方法。三行代码是最基本的: