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 :

Equilibrer une équation-bilan de combustion


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 Equilibrer une équation-bilan de combustion
    Bonjour à tous,

    je ne sais pas s'il existe un endroit sur ce site pour publier des programmes qui sont terminés et fonctionnent, mais je souhaiterai publier sur ce site un petit programme
    qui intéressera peut-être des chimistes, et en particulier des enseignants en lycée.
    Il permet d'équilibrer une équation-bilan de combustion d'un composé organique de formule CxHyOz, où les nombres d'atomes x,y et z sont introduits via le Terminal.
    Le programme affiche alors l'équation-bilan toujours équilibrée avec des coefficients stoechiométriques entiers, et la notation en indice du nombre d'atomes dans les molécules est également respectée.

    Merci à ceux parmi vous qui m'ont aidé à la réalisation de ce petit programme. On peut certainement l'améliorer....mais en tous cas, il fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    # Auteur : Olivier OREGGIA
    # Date : 10 avril 2019
     
    SUB = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")
     
    print("")
    print \
        ("Nous allons considérer un composé organique de formule brute CxHyOz dont on va réaliser la combustion en présence de dioxygène O2. On admet que la combustion est totale. ")
    print(" ")
    print \
        ("Le but de cet exercice est d'afficher l'équation-bilan de la réaction équilibrée avec des coefficients stoechiométriques entiers les plus petits possible.")
    print(" ")
    x= int(input("Entrez de nombre d'atomes de carbone contenus dans la molécule: "))
    y = int(input("Entrez de nombre d'atomes d'hydrogène contenus dans la molécule: "))
    z = int(input("Entrez de nombre d'atomes d'oxygène contenus dans la molécule: "))
     
    if z == 0:
        c = 2 * x + (y / 2)
        d=c/2
        d=int(d)
        if c % 2 == 0:
            h=y/2
            h=int(h)
            print("")
            print("Réponse: ")
            print("")
            print("C" + str(x).translate(SUB) + "H"+ str(y).translate(SUB)+"  +  ",d,"O2".translate(SUB),"   --->", x, "CO2".translate(SUB),"  +  ", h, "H2O".translate(SUB))
     
        else:
            c=int(c)
            print("")
            print("Réponse: ")
            print("")
            print(2, "C" + str(x).translate(SUB) + "H"+ str(y).translate(SUB)+ "  +  ", c, "O2".translate(SUB),"   --->", 2 * x, "CO2".translate(SUB),"  +  ", y, "H2O".translate(SUB))
     
    else:
        g = 2 * x + (y / 2) - z
        if g % 2 == 0:
            d=g/2
            h=y/2
            d=int(d)
            h=int(h)
            print("")
            print("Réponse: ")
            print("")
            print("C" + str(x).translate(SUB)+ "H" + str(y).translate(SUB)+"O"+str(z).translate(SUB), "  +  ", d, "O2".translate(SUB),"   --->", x, "CO2".translate(SUB)+"   +   ", h, "H2O".translate(SUB))
     
        else:
            g=int(g)
            print("")
            print("Réponse: ")
            print("")
            print(2, "C"+ str(x).translate(SUB)+ "H"+ str(y).translate(SUB)+ "O"+ str(z).translate(SUB)+ " +  ", g, "O2".translate(SUB),"   --->", 2 * x, "CO2".translate(SUB)+"   +   ", y, "H2O".translate(SUB))
    Attention: cette plateforme a fait un changement à la ligne 6 du programme dont la version correcte est :
    SUB = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")

    N'oubliez donc pas de corriger cette ligne, sinon le programme ne fonctionne pas.

    J'espère que ce petit programme puisse être utile à certains d'entre vous.

    Cordialement,

  2. #2
    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
    C'est sympa. Juste une petite remarque : pourquoi indiquer que la réaction est totale ?
    L'équilibrage n'est pas modifiée dans le cas où la réaction est limitée...
    Sinon, pour le cosmétique : "Entrez le nombre d'atomes" et un espace avant le ":" ainsi qu'un "s" à "possible"
    Pas d'aide par mp.

  3. #3
    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
    Proposition d'amélioration (1 parmi bien d'autres possibles) :

    définir 2 variables qui seraient nb_h2o et nb_co2. Dans vos conditions if/else, plutôt que de faire plein de print, simplement mettez à jour ces 2 valeurs. A la fin vous n'avez plus qu'à utiliser ces 2 variables, pour faire votre print. Ainsi vous ne recopiez pas 4 fois les 3 lignes de print. Cela permet également de dissocier dans le code, le calcul à proprement parler du simple affichage du résultat.

  4. #4
    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 pour vos remarques. J'essaie de modifier le programme en conséquence.

    Citation Envoyé par lg_53 Voir le message
    Proposition d'amélioration (1 parmi bien d'autres possibles) :

    définir 2 variables qui seraient nb_h2o et nb_co2. Dans vos conditions if/else, plutôt que de faire plein de print, simplement mettez à jour ces 2 valeurs. A la fin vous n'avez plus qu'à utiliser ces 2 variables, pour faire votre print. Ainsi vous ne recopiez pas 4 fois les 3 lignes de print. Cela permet également de dissocier dans le code, le calcul à proprement parler du simple affichage du résultat.

  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
    Peut-être également moyen de faire une fonction avec un "return reponse"
    Pas d'aide par mp.

Discussions similaires

  1. Résolution d'une équation trigonométrique
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 20/08/2009, 17h47
  2. Visual basic: algo résolvant une équation du second degré
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 05/12/2005, 17h16
  3. Label (1') pour une équation
    Par xavlours dans le forum Mathématiques - Sciences
    Réponses: 2
    Dernier message: 01/12/2005, 09h24
  4. Réponses: 2
    Dernier message: 31/10/2005, 21h00
  5. Déterminer les coefficients moyens d'une équation linéaire
    Par Oliveuh dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 11/01/2005, 23h23

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