print("Ce programme permet de déterminer la composition de l'état final d'un système à chaque ajout de réactif titrant")
print("L'équation de cette réaction est du type:")
print ('aA + bB = cC')

#Demande à l'utilisateur les informations sur réaction mise en jeu
a=1 #Nombre stoechiométrique du réactif A titrant
b=1 #Nombre stoechiométrique du réactif B titré
c=2 #Nombre stoechiométrique du produit C
VB=float(input('Volume de réactif titré (en L):'))
CB=float(input('concentration à contrôler du réactif titré  (en mol/L):'))
CA= float(input('Concentration du réactif titrant  (en mol/L):'))
VA=float(input('volume de réactif titrant versé  (en L):'))


#Boucle conditionnelle qui détermine l'avancement maximal de la réaction chimique
xfA=round((CA*VA)/a,5)
xfB=round((CB*VB)/b,5)
if xfA<xfB:
        limitant='A'
        xf=xfA
elif xfA>xfB:
        limitant='B'
        xf=xfB
else:
        limitant='A et B: le mélange est stoechiométrique'
        xf=xfA


#Bilan de matière à l'état final
nA_fin=round((CA*VA)-a*xf,5)
nB_fin=round((CB*VB)-b*xf,5)
nC_fin=round(c*xf,5)


#Affichage des résultats
print('Le réactif limitant est',limitant,'\n Avancement maximal:',xf,'mol')
print('La quantité finale de réactif titrant A est de',nA_fin,'mol')
print('La quantité finale de réactif titré B est de',nB_fin,'mol')
print('La quantité finale de produit C est de',nC_fin,'mol')

