Chaine de caractère d'un calcul à calculer en python
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Chaine de caractère d'un calcul à calculer en python



  1. #1
    Ultimatom

    Chaine de caractère d'un calcul à calculer en python


    ------

    Bonjour !

    Sur un jeu vidéo, j'utilise une API pour récupérer des données et ainsi étudier le marché du jeu. Dans une chaine de caractère je récupère cette chaine :
    "(Math.pow(price*6.013197 + (-14.809734 + (saturation - 0.5)/0.264575), 2.000000)*0.156973 + 24.660693)*amount"

    Malheureusement j'ai besoin de trouver le résultat de ce calcul qui est sous forme de chaine et qui en plus à des coefficients variables. Mon programme est en python. Les 3 inconnues ici sont des valeurs que je connais donc pas de problème à ce niveau là.

    J'aimerai connaitre vos avis pour savoir quelle est la meilleure manière de faire pour calculer cette chose de manière optimale.

    Je viens d'y réfléchir quelques minutes. Je pense que la meilleure façon de réaliser le calcul est d'extraire un à un chacun des nombres de la chaîne et de reproduire le calcul en python ensuite avec les coefficients qu'on a récupéré un à un. Info importante, il semblerait que tous les nombres à récupérer ont tous 6 chiffres après la virgule et que le 0,5 est une constante donc on peut l'ignorer.

    Sinon j'envisageais d'écrire dans un fichier python vierge le code pour réaliser ce calcul : "import math [...] price = 4,45 [...]" puis copié la chaine et la mettre en minuscule car en python c'est "math" et pas "Math" pour enfin exécuter et récupérer la valeur calculé.

    Qu'est ce que vous en pensez ?

    Aussi si vous pouviez me conseiller sur les instructions particulièrement utile pour extraire des sous-chaines d'une chaine dans ce cas précis, cela m'aiderait beaucoup !

    En vous remerciant !

    -----

  2. #2
    CM63

    Re : Chaine de caractère d'un calcul à calculer en python

    Bonjour,

    Citation Envoyé par Ultimatom Voir le message
    Sinon j'envisageais d'écrire dans un fichier python vierge le code pour réaliser ce calcul : "import math [...] price = 4,45 [...]" puis copié la chaine et la mettre en minuscule car en python c'est "math" et pas "Math" pour enfin exécuter et récupérer la valeur calculé.
    Oui, c'est la meilleur façon, je crois, à part qu'il y a une parenthèse en trop au début.
    Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

  3. #3
    Ultimatom

    Re : Chaine de caractère d'un calcul à calculer en python

    Si écrire un script dans un autre fichier est la meilleure facon, suis-je obligé d'écrire le résultat du calcul Math.pow[...] dans un autre fichier aussi pour pouvoir le récupérer ou bien il est possible avec execfile() de récupérer directement le résultat ?

  4. #4
    polo974

    Re : Chaine de caractère d'un calcul à calculer en python

    Attention, exécuter du code en python venant d'une API, c'est donner le contrôle de l'ordi à l'API (en tout cas sur qu'a le droit de faire l'utilisateur, ce qui peut être quand même assez désagréable...
    Donc filtrer l'expression avant de l'exécuter, facile à dire, ardu à faire si la formule est changeante...

    Sinon pour Math au lieu de math, suffit de faire:
    import math as Math

    Ou bien si math est déjà importé:
    Math = math

    Enfin, il faut lire la doc de exec et eval.
    Sans oublier pour des trucs plus sioux, le package importlib.
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura
  6. #5
    Ultimatom

    Re : Chaine de caractère d'un calcul à calculer en python

    Citation Envoyé par polo974 Voir le message
    Attention, exécuter du code en python venant d'une API, c'est donner le contrôle de l'ordi à l'API (en tout cas sur qu'a le droit de faire l'utilisateur, ce qui peut être quand même assez désagréable...
    Donc filtrer l'expression avant de l'exécuter, facile à dire, ardu à faire si la formule est changeante...
    Daccord, oui c'est sûr que ca pourrait être risqué.. Maintenant les probabilités qu'ils changent un jour la formule pour être malveillant et mettre une commande qui en plus serait en python et qui serait traité par mon code... Vraiment peu probable. Je vais faire des tests pour éviter ça.

    Merci pour les infos ! Intéressant le "import math as Math" et le "Math = math". Ca semble évident une fois lu, mais je n'y aurai jamais pensé...
    Dernière modification par Ultimatom ; 08/08/2022 à 11h29.

  7. #6
    Ultimatom

    Re : Chaine de caractère d'un calcul à calculer en python

    Et autre question, pour récupérer le résultat de mon calcul qui est exécuté dans un autre fichier, je dois l'enregistrer dans une 3ème fichier afin de pouvoir le récupérer ou bien il y a un moyen à l'exécution de récupérer le résultat rapidement ?

  8. #7
    pm42

    Re : Chaine de caractère d'un calcul à calculer en python

    Il faut surtout renoncer à cette histoire de fichiers qui est inefficace et lourde à souhait quand la fonction eval déjà citée plus haut fait exactement ce que tu veux.

  9. #8
    Ultimatom

    Re : Chaine de caractère d'un calcul à calculer en python

    Oui évidemment, je m'étais mis en tête d'utiliser d'autres fichiers, mais il y en a plus besoin. Cela dit, la réponse m'intéresse tj concernant l'execution d'un fichier python a partir d'un autre programme et de récupérer son résultat.

Discussions similaires

  1. Lecture fichier python + chaine de caractère
    Par invite518beb1e dans le forum Programmation et langages, Algorithmique
    Réponses: 18
    Dernier message: 29/11/2021, 12h07
  2. Intégrer caractère entre les caractères d'une chaîne - PYTHON
    Par invitea3d14755 dans le forum Programmation et langages, Algorithmique
    Réponses: 12
    Dernier message: 22/06/2016, 07h36
  3. [C] Concaténer chaine de caractère + caractère
    Par invite48ca7510 dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 26/01/2013, 12h43
  4. chaîne de caractère
    Par invite9f95f6e7 dans le forum Programmation et langages, Algorithmique
    Réponses: 15
    Dernier message: 01/01/2012, 16h06
  5. Python, remplacement d'une chaine de caractère
    Par inviteb4450379 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 12/09/2011, 17h24