print("On considère la réaction totale a.A+b.B->c.C+d.D")
# Entrée des paramètres initiaux
a= float(input("Valeur de a (1 par défaut): ") or "1")
b= float(input("Valeur de b (1 par défaut): ") or "1")
c= float(input("Valeur de c (1 par défaut): ") or "1")
d= float(input("Valeur de d (1 par défaut): ") or "1")
n0A= float(input("Quantité initiale de A en mol: "))
n0B= float(input("Quantité initiale de B en mol: "))
n0C= float(input("Quantité initiale de C en mol(0 par défaut):") or "0")
n0D= float(input("Quantité initiale de D en mol(0 par défaut):") or "0")
#On fait les deux hypothèses pour l'avancement final
xf1=n0A/a #Hypothèse 1 : A est le réactif limitant
xf2=n0B/b #Hypothèse 2 : B est le réactif limitant
#On détermine laquelle des deux hypothèses est la bonne
#On détermine alors le réactif limitant et on l'affiche
if xf1<xf2 :
xf=xf1
print("A est le réactif limitant")
elif xf1==xf2 :
xf=xf1
print("A et B ont été introduits dans les proportions stoechiométriques")
else :
xf=xf2
print("B est le réactif limitant")
#On calcule les quantités de réactifs et de produits dans l'état final
nfA=n0A-a*xf
nfB=n0B-b*xf
nfC=n0C+c*xf
nfD=n0D+d*xf
#On affiche la composition de l'état final
print("Composition de l'état final:\n", "nf(A)="+str(nfA)+" mol\n", "nf(B)="+str(nfB)+" mol\n","nf(C)="+str(nfC)+" mol\n", "nf(D)="+str(nfD)+" mol")