1

我在 Python 2.7 中使用此代码通过以下方式生成一个新数字:

def Alg(n):
    n=((n**2)-1)/4
    return n    

我收到错误消息:

TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'

任何帮助都会很棒!谢谢!

4

2 回答 2

4

None不知何故,当您调用此函数时,您正在传递,这就是正在发生的事情:

Alg(None)

...所以在n函数None内部,导致错误。换句话说:问题不在于函数,而在于你调用它的地方。

还有一个警告 - 你正在执行整数之间的除法,最好安全地使用它并确保至少有一个除法的操作数是小数,否则你可能会失去精度:

def Alg(n):               # there's no need to reassign n
    return ((n**2)-1)/4.0 # notice the .0 part at the end
于 2013-09-24T16:23:02.350 回答
0

您的代码对我来说工作得很好,但作为替代方案,您可以powmath模块中使用。

import math as m
def Alg(n):
    n=(m.pow(n,2) -1)/4
    return n 
print(Alg(3))
于 2020-04-29T23:36:16.953 回答