Chapitre 01

Activités Python

Acides, bases et pH

Activité

Relier pH et concentration

Consigne

Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.

Objectif. Tracer log[H3O+]\log [\text{H}_3\text{O}^+] en fonction du pH mesuré :

[H3O+]=c×10pH[\text{H}_3\text{O}^+] = c^\circ\times 10^{-\text{pH}} donne log[H3O+]=pH\qquad\log [\text{H}_3\text{O}^+] = -\text{pH}

log[H3O+]=f(pH)\log [\text{H}_3\text{O}^+] = f(\mathrm{pH}) est donc une droite de pente -1. Le tracé reprend les résultats de l’E.C.E. : les concentrations sont connues par dilution, et la seule ligne à compléter contient les pH mesurés.

Le script scripts/Ch01_pH.py (à ouvrir et exécuter dans EduPython) est prêt à l’emploi : une seule ligne est à compléter — la liste des pH mesurés pendant l’E.C.E.

Script élève

# -*- coding: utf-8 -*-
"""
Chapitre 1 - Acides, bases et pH
--------------------------------
Tracer log[H3O+] en fonction du pH mesure.

La relation  [H3O+] = c0 * 10^(-pH)  s'ecrit aussi  log([H3O+]/c0) = -pH :
le graphique  log[H3O+] = f(pH)  doit donc etre une DROITE de pente -1.
Les points experimentaux viennent de l'E.C.E. : les concentrations sont connues
par dilutions successives, et les pH sont mesures au pH-metre.

A ouvrir et executer dans EduPython (menu "Executer" ou touche F5).
Seule la ligne des pH mesures est a completer.
"""

import math
import matplotlib.pyplot as plt

# Concentration standard (mol/L) : rend l'argument du log sans dimension.
c0 = 1.0

# --- Resultats de l'E.C.E. : solutions d'acide chlorhydrique diluees ---
solutions = ["S0", "S1", "S2", "S3"]
H3O_connue = [1.0e-2, 1.0e-3, 1.0e-4, 1.0e-5]
pH = []  # A COMPLETER : les 4 pH mesures, entre crochets, separes par des virgules

# --- Calcul de log[H3O+] pour chaque solution, une valeur a la fois ---
log_H3O = []
for h in H3O_connue:
    log_H3O.append(math.log10(h / c0))

# --- Vérifier si les valeurs ont été rentrées ---
if len(pH) != len(H3O_connue):
    print("A COMPLETER : mets les 4 pH mesures dans la liste pH.")

# --- Droite theorique log[H3O+] = -pH, construite point par point ---
pH_theorique = []
log_theorique = []
for k in range(15):          # pH entier de 0 a 14
    pH_theorique.append(k)
    log_theorique.append(-k)

# --- Trace : log[H3O+] en fonction du pH (echelles lineaires) ---
plt.figure()
plt.plot(pH_theorique, log_theorique, color="gray", label="log[H3O+] = -pH")
if len(pH) == len(H3O_connue):
    plt.plot(pH, log_H3O, "o", color="crimson", label="solutions diluees")
plt.xlabel("pH")
plt.ylabel("log([H3O+]/c0)")
plt.title("log[H3O+] en fonction du pH")
plt.grid(True, linestyle=":")
plt.legend()
plt.show()

← Retour au portail du chapitre