Python 尝试定义时:TypeError:**或pow()的操作数类型不受支持:';非类型';和';int';

Python 尝试定义时:TypeError:**或pow()的操作数类型不受支持:';非类型';和';int';,python,python-2.7,Python,Python 2.7,我在Python2.7中使用这段代码生成一个新的数字: def Alg(n): n=((n**2)-1)/4 return n 我得到了错误信息: TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int' 任何帮助都会很好!谢谢 不知何故,调用此函数时传递的是None,如下所示: Alg(None) 。。。因此,函数中的n为None,导致错误。换句话说:问题不在于函数,而

我在Python2.7中使用这段代码生成一个新的数字:

def Alg(n):
    n=((n**2)-1)/4
    return n    
我得到了错误信息:

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

任何帮助都会很好!谢谢

不知何故,调用此函数时传递的是
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

您的代码对我来说非常好,但作为替代,您可以使用
math
模块中的
pow

将数学导入为m
def Alg(n):
n=(m.pow(n,2)-1)/4
返回n
打印(Alg(3))

你怎么称呼这个?你怎么称呼Alg
Alg(None)
?对于除法,在文件开头从“未来”导入除法中执行
,以获得除法运算符的新版本要简单得多,它始终可以实现真正的视觉效果。请看:我认为您应该向OP指出,
n
可以是
None
,这是OP面临的问题。