Je suis un débutant en python et ne peux pas comprendre pourquoi cela se produit:

from math import *
print "enter the number"
n=int(raw_input())
d=2
s=0
while d<n :
    if n%d==0:
       x=math.log(d)
       s=s+x
       print d
    d=d+1
print s,n,float(n)/s   

L'exécuter en Python et entrer un non premier donne l'erreur

Traceback (most recent call last):
  File "C:\Python27\mit ocw\pset1a.py", line 28, in <module>
    x=math.log(d)
NameError: name 'math' is not defined
28
Danny 30 nov. 2011 à 20:42

4 réponses

Meilleure réponse

Changement

from math import *

À

import math

L'utilisation de from X import * n'est généralement pas une bonne idée car elle pollue de manière incontrôlable l'espace de noms global et pourrait présenter d'autres difficultés.

53
NPE 30 nov. 2011 à 16:50

Tu as fait une erreur ..

Quand tu as écrit:

from math import *
# This imports all the functions and the classes from math
# log method is also imported.
# But there is nothing defined with name math

Donc, lorsque vous essayez d'utiliser math.log

Cela vous donne une erreur, donc:

Remplacer math.log par log

Ou

Remplacer from math import * par import math

Cela devrait résoudre le problème.

8
Yugal Jindle 30 nov. 2011 à 17:15

Que diriez-vous (lorsque vous n'avez besoin que de math.pi):

from math import pi as PI

Puis l'utiliser comme symbole PI?

0
TomKo1 13 déc. 2019 à 11:43

Vous devez import math plutôt que from math import *.

7
Sam Dolan 30 nov. 2011 à 16:43
8329601