1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# -*- coding: utf-8 -*-
def traduit(chaine):
"""cette méthode vérifie la validité de la chaîne en fonction de sa provenance et, au besoin, transforme des expressions possibles (10^11) en grandeur acceptée par python"""
# on force le type chaîne pour pouvoir faire des évaluations.
chaine=str(chaine).replace(" ","") # et retrait de tous les espaces
#vérification de la présence d'un float correct, sinon tente des modifs.
try :
chaine=float(eval(chaine))
except :
chaine=chaine.replace("10^","e")
#remplace la chaine 10^ par e
else:
return chaine
try :
chaine=float(eval(chaine))
except :
#remplace les "x" pour la multiplication
chaine=chaine.replace("x","*")
chaine=chaine.replace("X","*")
else:
return chaine
try :
chaine=float(eval(chaine))
except :
#remplace les "*" devant un "e"
chaine=chaine.replace("*e","e")
else:
return chaine
try :
chaine=float(eval(chaine))
except :
#self.debug(0,u"Erreur : %s, même après les tranformations, n'est pas une expression acceptable" %chaine)
return 1.0
else:
return chaine
return 1.0
|