IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

convertir une formule en float


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2024
    Messages : 2
    Par défaut convertir une formule en float
    Bonjour, je suis étudiant, et je dois rendre un projet de programmation. Dans le programme, j'aimerais par exemple, faire un input pour demander le cosinus et le sinus d'un angle à l'utilisateur du programme.
    Mais quand je fait par exemple:

    cos=float(input("cos=")) et que l'utilisateur rentre par exemple : cos(np.pi) , ça me retourne une erreur comme quoi float n'accepte pas les chaînes de caractères.

    Dans ce projet il est nécessaire que mes variables soit très précises puisque j'étudie un système chaotique, donc j'aimerais que l'utilisateur puisse mettre des formules au lieu de nombres.

    Auriez-vous une solution à m'apporter?

    Dans un autre forum j'ai vu qu'ils avaient redirigé la personne vers le module simpy, mais je n'ai rien compris à ce que c'était.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Oui parce-que input retourne une chaîne de caractères.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Citation Envoyé par matazzo Voir le message
    Auriez-vous une solution à m'apporter?
    Vu que ce n'est pas pour un projet professionnel, vous pouvez toujours utiliser eval:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> from math import cos, pi
    >>> eval(input('> '))
    >cos(pi)
    -1.0
    >>> eval(input('> '))
    > cos(2*pi)
    1.0
    (à vos risques et périls).

    Ceci dit, si l'utilisateur doit écrire des formules compliquées autant qu'il les écrive sous la forme de fonctions dans un module qu'on va pouvoir importer... De toutes façons, il devrait savoir un peu programmer.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2024
    Messages : 2
    Par défaut
    Bonjour, merci de vos réponses.
    effectivement mon examinateur saura écrire la formule directement dans le programme. C'est juste que ça fait plusieurs fois que je me pose la question, et que c'était l'occasion de chercher une solution.

    Bref ce n'est pas du tout urgent, mais si jamais quelqu'un trouve la solution un jour, je suis preneur.

    Merci quand même.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Citation Envoyé par matazzo Voir le message
    mais si jamais quelqu'un trouve la solution un jour, je suis preneur.
    La solution est d'analyser l'expression en utilisant éventuellement les fonctionnalités du module ast. (et ca se trouve en cherchant un peu sur Internet).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par matazzo Voir le message
    Dans un autre forum j'ai vu qu'ils avaient redirigé la personne vers le module simpy, mais je n'ai rien compris à ce que c'était.
    C'"est un simulateur de système complexe (voire chaotique). Tu peux définir des objets comme par exemple des atomes puis définir leur interactions et le truc va te dérouler ton système dans le temps. Une sorte de "jeu de la vie" en plus élaboré.
    Effectivement je vois mal le lien avec ton besoin. Toi tu voudrais que ton programme puisse "traduire" la réponse de l'utilisateur et ça c'est pas facile. Ca passe par une analyse grammaticale de la réponse donnée => ast (Abstract Syntax Trees) mentionné par wiztricks.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2022
    Messages : 12
    Par défaut
    float s'applique à une variable numerique , pas à une variable alphanumerique ( la fn mathematique " cos")

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 207
    Par défaut
    Citation Envoyé par matazzo Voir le message
    Dans un autre forum j'ai vu qu'ils avaient redirigé la personne vers le module simpy, mais je n'ai rien compris à ce que c'était.
    Hello,
    matazzo a du faire une faute de frappe car c'est plutôt sympy qui permet de faire ce genre de choses.

    Ami calmant, J.P

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Citation Envoyé par osenon Voir le message
    float s'applique à une variable numerique , pas à une variable alphanumerique ( la fn mathematique " cos")
    float essaie de convertir, si cela est possible, un objet de type str (chaine de caractères) ou certains types dits "numériques" en type numérique dit "float".

    La chaine de caractères "1_000_000.0" contient les caractères de ponctuation _ et . (ils ne sont pas alphanumériques). Pourtant float sait le convertir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> float('1_000_000.0')
    1000000.0
    >>> type(_)
    <class 'float'>
    >>>
    A noter que '1_000_000.0' est un littéral et non une variable (notion qui est tout un sujet avec Python vu les petites différences apportées à cette notion comparé aux autres langages).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. convertir une formule de type string en double
    Par SkyRhum dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 10/05/2012, 13h38
  2. [C#] Comment convertir une String en float ?
    Par DestinyWar45 dans le forum C#
    Réponses: 7
    Dernier message: 08/10/2010, 04h19
  3. [XL-2002] convertir une formule Excel en VBA
    Par bubulemaster dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/09/2009, 09h40
  4. Convertir une wxString en float
    Par afrodje dans le forum wxWidgets
    Réponses: 6
    Dernier message: 12/03/2009, 11h39
  5. [XSLT]Convertir une chaîne en float, int etc ... avec XSL
    Par wozzz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 19/05/2006, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo