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,
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Damien Wyart
Le #24811422
* 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 ?



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
Alain Ketterlin
Le #24811492
François Couloigner
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'



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.
Publicité
Poster une réponse
Anonyme