Outils pour utilisateurs

Outils du site


divers_expr_reg

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
divers_expr_reg [2008/12/11 14:37]
tyrtamos
divers_expr_reg [2008/12/11 18:37] (Version actuelle)
tyrtamos
Ligne 121: Ligne 121:
   * si en plus je veux reconnaître des nombres écrits en français (avec la virgule), il suffit que je remplace le point par une virgule dans le motif. ​   * si en plus je veux reconnaître des nombres écrits en français (avec la virgule), il suffit que je remplace le point par une virgule dans le motif. ​
  
 +\\
 +Et voilà une fonction qui, à partir d'une chaine, renvoie un entier, un entier long, un flottant ou False (d'​après une idée de eyquem: [[http://​www.developpez.net/​forums/​d656901/​autres-langages/​python-zope/​general-python/​verifier-entree-nombre/​]]).
 +
 +<code python>
 +def numbereval(x):​
 +    if re.match(r"​^[+-]?​[0-9]+[lL]?​$",​ x):
 +        if x!=""​ and x[-1] in "​lL":​
 +            return long(x[:​-1])
 +        else:
 +            return int(x)
 +    elif re.match(r"​^[+-]?​(([0-9]+[eE][+-]?​[0-9]+)|([0-9]+\.[0-9]*([eE][+-]?​[0-9]+)?​)|(\.[0-9]+([eE][+-]?​[0-9]+)?​))$",​ x):
 +        return float(x)
 +    else:
 +        return False
 +</​code>​
 +
 +Cette fonction détecte un entier long de 2 façon différentes:​
 +
 +  * si l'​entier est tellement long qu'il déborde le "​int"​ (exemple: "​55555555555555555555"​).
 +
 +  * si l'​entier est donné avec un "​l"​ ou un "​L"​ à la fin (exemple: "​12L"​).
 +
 +Et voilà le code pour le tester:
 +
 +<code python>
 +while True:
 +    y = numbereval(raw_input('​x ='​).strip())
 +    if y:
 +        print type(y), y
 +    else:
 +        print u"ce n'est pas un nombre"​
 +</​code>​
 +
 +\\
 +Amusez-vous bien!
  
  
divers_expr_reg.txt · Dernière modification: 2008/12/11 18:37 par tyrtamos