Chaque fois que j'essaie d'utiliser l'une des fonctions intégrées du module d'exponentiation et de logarithmes de Python, j'obtiens une erreur comme celle-ci:
NameError: name 'sqrt' is not defined
J'ai essayé d'utiliser math.sqrt(4)
, sqrt(4)
et sqrt(4.0)
, mais aucun d'entre eux ne fonctionne. L'exception est pow
, qui fonctionne comme prévu. C'est vraiment étrange et je ne suis pas sûr de ce qui ne va pas.
pow
est intégré au langage (il ne fait pas partie de la bibliothèque de mathématiques). Le problème est que vous n'avez pas importé de maths.
Essaye ça:
import math
math.sqrt(4)
Vous pouvez également importer en tant que
from math import *
Vous pouvez ensuite utiliser n’importe quelle fonction mathématique sans préfixer math. par exemple.
sqrt(4)
ajouter:
import math
au début. et ensuite utiliser:
math.sqrt(num) # or any other function you seem neccessary
Vous devez dire math.sqrt
lorsque vous l'utilisez. Ou bien, faites from math import sqrt
.
Hmm, je viens de lire votre question plus à fond ... Comment importez-vous math
? Je viens d'essayer import math
et ensuite math.sqrt
qui a parfaitement fonctionné. Faites-vous quelque chose comme import math as m
? Si c'est le cas, vous devez préfixer la fonction avec m
(ou le nom que vous avez utilisé après as
).
pow
fonctionne car il existe deux versions: une version toujours disponible dans __builtin__
et une autre version dans 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))
Dans
depuis math import sqrt
Utiliser sqrt (4) fonctionne parfaitement bien. Vous devez uniquement utiliser math.sqrt (4) lorsque vous utilisez simplement "import math".