Bonjour
j'ai entré un programme en python et ça m'affiche "math domain error" et je ne sais pas comment m'y prendre pour régler ça....le voici :
Merci d'avance.Code:
1
2
3 for k in liste: G=-k*math.log(k,2) print ('resultat:',G)
Version imprimable
Bonjour
j'ai entré un programme en python et ça m'affiche "math domain error" et je ne sais pas comment m'y prendre pour régler ça....le voici :
Merci d'avance.Code:
1
2
3 for k in liste: G=-k*math.log(k,2) print ('resultat:',G)
# Pwned by voisin du bas.
Salut,
La fonction log n'est définie que pour des entiers >0, ce que traduit le message d'erreur:
- WCode:
1
2
3
4
5
6
7
8
9
10 >>> import math >>> math.log(-2) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: math domain error >>> math.log(0) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: math domain error >>>
Mais dans ce cas je ne comprends pas pourquoi j'ai cet affichage puisqu'il n'y a pas de nombres négatifs dans le logarithme , car la liste ne contient que des chiffres positifs.
Ainsi lorsqu'on a : for k in liste , k ne prend que des valeurs positives ,
alors pourquoi ça m'affiche ça ?
Merci d'avance.
il prend les valeurs de la liste : liste=[0.3,0.4,0.2,0.1,0.005]
Si c'est le cas, vous pouvez vérifiez ce que math.log(k, 2) retourne.
Chez moi çà donne:
Si chez vous çà fonctionne aussi, c'est que les "k" ne sortent pas de cette liste là...Code:
1
2
3
4
5
6
7
8
9 >>> for k in [0.3,0.4,0.2,0.1,0.005] : ... math.log(k, 2) ... -1.7369655941662063 -1.3219280948873622 -2.321928094887362 -3.321928094887362 -7.643856189774724 >>>
- W
Ok ça fonctionne aussi ,
je ne comprends pas pourquoi ça ne fonctionnait pas avant
Merci beaucoup pour votre aide