conversion string en valeur numerique
Le
François Couloigner

Bonjour,
Voulant saisir une grande valeur numérique j'écris (python 3.2):
chaine = input()
n = int(chaine) # ou float(chaine)
Si je saisis 10**3 lors de l'exécution j'obtiens le message :
ValueError: invalid literal for int() with base 10: '10**3'
Pourquoi ?
En vous remerciant,
Voulant saisir une grande valeur numérique j'écris (python 3.2):
chaine = input()
n = int(chaine) # ou float(chaine)
Si je saisis 10**3 lors de l'exécution j'obtiens le message :
ValueError: invalid literal for int() with base 10: '10**3'
Pourquoi ?
En vous remerciant,
La documentation de int(),
http://docs.python.org/py3k/library/functions.html#int, précise bien que
la chaine ne doit contenir que des "chiffres" (au sens large pour une
base > 10) et un signe optionnel.
Dans votre exemple on peut essayer de détecter que l'opérateur ** est
présent dans la chaîne et appeler eval() dessus pour la transformer en
entier par évaluation.
--
DW
Parce que int() veut un litéral entier (l'écriture d'un entier), pas une
expression quelconque. Tu peux lui donner "3" mais pas "1+2".
Tu cherches sûrement eval(), mais pour le coup c'est beaucoup plus
puissant que ce que tu veux (donc plus dangereux).
-- Alain.