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”.