Python 3x:导入Math库python

时间:2019-01-08 16:16:54

标签: python python-3.x

我要执行以下代码:

import math

class A(object): 

    def someNum(self, num): 
        num = int(math.log2(num))
        return num

a = A()
a.someNum('9')
  

但是会引发异常:

Traceback (most recent call last):
  File "main.py", line 34, in <module>
    a.numToLoc('9')
  File "main.py", line 30, in numToLoc
    num = int(math.log2(num))
AttributeError: 'module' object has no attribute 'log2'

我想念什么?

3 个答案:

答案 0 :(得分:4)

math.log2Python 3.3中引入的。您可能正在使用早期版本。

在那些早期版本中,您可以使用

math.log(num, 2)

相反。

答案 1 :(得分:0)

您有一个名为math.py的文件,位于与您尝试运行的代码相同的目录中。删除或重命名。

当您import math时,Python会遍历sys.path中的目录并导入名为math.py的第一个文件(或带有math的名为__init__.py的目录里面的文件)。 sys.path中的第一个条目是当前目录,因此它将首先看到您的math.py

请参阅modulesthe import statement的文档。

答案 2 :(得分:-1)

如已建议使用Python3.3或更高版本 要么 使用math.log(num, 2)

还需要稍作修改。

请更改

a.someNum('9')

a.someNum(9)

否则发生此错误。

TypeError: a float is required