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,