L'utilisateur rentre sa formule dans un champ et le programme calcule alors le résultat et l'affiche dans le même champ. Je récupère la relation de l'utilisateur sous forme d'une chaîne de caractères et j'utilise ensuite la fonction eval pour calculer le résultat. Cette technique me pose un soucis dans le cas suivant : supposons que l'utilisateur saisisse '1/2': >>> eval('1/2') 0 >>> Ce résultat, tout-à-fait normal, est tout de même très surprenant pour l'utilisateur qui s'attendait au résultat 0.5. Il aurait fallu entrer: >>> eval('1./2') 0.5 >>> Le fait de demander à l'utilisateur de saisir les entiers avec un point n'est pas pratique et peut être source d'erreurs s'il ne le fait pas. Je souhaite donc automatiser la vérification de la relation saisie par l'utilisateur. La question que je vous pose est donc la suivante : comment pourrais-je faire pour que, avant d'utiliser 'eval', tous les entiers contenus dans la chaîne de caractères soient convertis en réel (en ajoutant un '.')? ex: chaîne saisie : 'sin(34/56)+122/3' chaîne corrigée : 'sin(34./56.)+122./3.' réponse : from __future__ import division ne marche pas dans ton programme ? Ici: |>>> print eval('1/2') 0 |>>> from __future__ import division |>>> print eval('1/2') 0.5 Attention, par contre, si dans ton code tu utilises quelque part vraiment la division entière, il faut utiliser dans ce cas // |>>> from __future__ import division |>>> print eval('1//2') Afficher la citation En fait, je pense qu'il est prudent de toujours utiliser: from __future__ import division