Módulo de matemáticas de Python

Cada vez que trato de usar cualquiera de las funciones integradas del módulo de exponenciación y logaritmos de Python, aparece un error como este:

NameError: name 'sqrt' is not defined 

He intentado usar math.sqrt(4) , sqrt(4) y sqrt(4.0) , pero ninguno de ellos funciona. La excepción es pow , que funciona como se supone. Esto es realmente extraño y no estoy seguro de lo que está mal.

pow está integrado en el idioma (no forma parte de la biblioteca matemática). El problema es que no has importado matemáticas.

Prueba esto:

 import math math.sqrt(4) 

También puede importar como

 from math import * 

Entonces puedes usar cualquier función matemática sin prefijo matemática. p.ej

 sqrt(4) 

añadir:

 import math 

al principio. y luego usar:

 math.sqrt(num) # or any other function you seem neccessary 

Necesitas decir math.sqrt cuando lo uses. O bien, from math import sqrt .

Hmm, acabo de leer tu pregunta más a fondo … ¿Cómo estás importando math ? Acabo de intentar import math y luego math.sqrt que funcionó perfectamente. ¿Estás haciendo algo como import math as m ? Si es así, entonces tiene que prefijar la función con m (o el nombre que haya usado después de).

pow está funcionando porque hay dos versiones: una versión siempre disponible en __builtin__ , y otra versión en math .

 import math #imports math module import math as m print(m.sqrt(25)) from math import sqrt #imports a method from math module print(sqrt(25)) from math import sqrt as s print(s(25)) from math import * print(sqrt(25)) 

En

desde math import sqrt

Usar sqrt (4) funciona perfectamente bien. Solo necesitas usar math.sqrt (4) cuando solo usas “import math”.