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

Calcul scientifique Python Discussion :

Ecrire une formule chimique avec des indices


Sujet :

Calcul scientifique Python

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 67
    Points : 42
    Points
    42
    Par défaut Ecrire une formule chimique avec des indices
    Bonjour à tous,

    je suis entrain d'écrire un petit programme pour faire apprendre à des élèves à équilibrer une équation-bilan simple.
    Mon problème n'est pas de créer ce programme, mais d'écrire correctement les formules chimiques dans le Terminal de Python 3.

    Pour écrire correctement par exemple, la formule C3H8 avec le "3" et le "8" en indice, j'utilise comme script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print("C"+chr(0x2083)+"H"+chr(0x2088))
    Mais si la formule est plus complexe, comme par exemple, C10H22, alors j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print("C"+chr(0x2081)+chr(0x2080)+"H"+chr(0x2082)+chr(0x2082))
    En clair, pour écrire "10" en indice, je suis obligé d'utiliser 2 fois l'instruction "chr", une fois pour coder le "1" en indice, et une deuxième fois, pour coder le "0" en indice. Idem pour le "22".

    Est-il possible de procéder autrement pour mettre directement en indice un nombre comportant plusieurs chiffres, sans avoir à répéter plusieurs fois cette instruction?

    N'existe-t-il pas par hasard une fonction pour cela dans un module (math....)?

    Merci,

    Cordialement,

    Olivier.
    Professeur.

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Une solution moins verbeuse serait d'utiliser le \u.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> 'C\u2081\u2080H\u2082\u2082'
    'C₁₀H₂₂'
    Ou encore en créant une simple fonction pour remplacer les chiffres d'une chaîne par des indices.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def ind(s):
    ...     table = str.maketrans({str(i):chr(0x2080 + i) for i in range(10)})
    ...     return s.translate(table)
    ... 
    >>> print(ind('C10H22'))
    C₁₀H₂₂
    Le temps ronge l'amour comme l'acide.

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup pour cette proposition de réponse.

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par Olivier20000 Voir le message
    pour écrire "10" en indice, je suis obligé d'utiliser 2 fois l'instruction "chr", une fois pour coder le "1" en indice, et une deuxième fois, pour coder le "0" en indice. (...)
    Est-il possible de (...) mettre directement en indice un nombre comportant plusieurs chiffres
    chr c'est l'abréviation de "character", on pioche dans une table (ASCII, UTF-8, ISO8859-15, CP1250 etc.) le caractère correspondant au numéro

    de la même manière qu'un nombre est composé de chiffres, la chaine "10" est composée de 2 caractères

    l'avantage étant qu'avec seulement 10 caractères tu peux écrire tous les nombres, à l'inverse dans la logique que tu proposes on disposerait d'1 caractère par nombre, on comprend facilement que la norme risque d'être longue à rédiger, surtout vers la fin comme dit l'autre.


  5. #5
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Super intéressant, ton projet. Si tu le présentais ici, cela pourrait servir à d'autres
    Pas d'aide par mp.

  6. #6
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 67
    Points : 42
    Points
    42
    Par défaut Projet Equation-bilan
    Bonjour,

    Merci de votre intérêt.
    Je viens de publier le programme sur ce site: "Equilibrer une équation-bilan d'une combustion".
    N'hésitez pas à me dire ce que vous en pensez, et les améliorations possibles.

    Citation Envoyé par marco056 Voir le message
    Super intéressant, ton projet. Si tu le présentais ici, cela pourrait servir à d'autres

  7. #7
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par Olivier20000 Voir le message
    Bonjour,

    Merci de votre intérêt.
    Je viens de publier le programme sur ce site: "Equilibrer une équation-bilan d'une combustion".
    N'hésitez pas à me dire ce que vous en pensez, et les améliorations possibles.
    Met un lien, sinon personne ne sait où aller voir !

Discussions similaires

  1. Faire une formule simplifiée avec des conditions
    Par Akino974 dans le forum Conception
    Réponses: 0
    Dernier message: 29/07/2014, 14h03
  2. VBA insertion d'une formule somme avec des données dynamique
    Par yann26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2014, 16h32
  3. [XL-2000] Ecrire une formule avec des variables
    Par mollus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/06/2011, 13h31
  4. Réponses: 14
    Dernier message: 30/06/2008, 18h53
  5. [RegEx] Ecrire une requete INSERT avec des variables $_POST
    Par arnaudperfect dans le forum Langage
    Réponses: 10
    Dernier message: 13/06/2007, 15h12

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