rho = m / V def identifier(rho, teb):
Seconde · Chapitre 1 · TP expérimental et numérique

Identifier des liquides inconnus

Quatre flacons incolores, sans étiquette. Tu vas mesurer leur masse volumique et observer leur ébullition. Python t'aidera à calculer, à comparer avec une table de référence et à repérer celui qui n'est pas un corps pur.

≈ 2 h en toutPesées, chauffage + 5 activités PythonSeul ou en binômePython s'exécute dans la page
← Tous les cours ← Retour au cours
Partie 1
Problématique

Que contiennent les flacons A, B, C et D ? Lesquels sont des corps purs ?

Objectifs

  • Mesurer une masse volumique avec une pipette jaugée et une balance.
  • Comparer des mesures à une table de référence, avec une tolérance.
  • Distinguer corps pur et mélange par une courbe de chauffage.
  • Croiser deux grandeurs pour identifier une espèce.

Compétences travaillées

  • Réaliser : pesée, prélèvement, chauffage en sécurité.
  • Analyser : choisir les grandeurs utiles.
  • Valider : conclure avec les limites de la mesure.
  • Communiquer : rédiger une identification argumentée.
L'éditeur Python de cette page

Le code s'exécute réellement dans ton navigateur. Au premier clic sur ▶ Exécuter, Python se télécharge (≈ 7 Mo, une seule fois, connexion Internet nécessaire). Le bouton Télécharger .py donne un fichier utilisable dans EduPython, Thonny, Basthon ou Capytale.

Raccourcis : Ctrl + Entrée exécute, Tab décale la ligne de 4 espaces.

Choisis ton parcours

Débutant en Python : fais les cinq activités dans l'ordre, en t'aidant des indices. À l'aise avec les variables et les boucles (en général à partir du deuxième trimestre) : l'activité 1 est facultative, commence directement à l'activité 2 et vise l'activité 5 sans indice.

1
Expérience : peser et chauffer
≈ 35 min · en salle de TP

Matériel

  • quatre flacons A, B, C, D de liquides incolores ;
  • pipette jaugée de 10,0 mL et propipette, bécher, balance au 0,01 g ;
  • plaque chauffante, tube à essai avec pierre ponce, thermomètre ou sonde ;
  • lunettes de protection, blouse.

Protocole

Masse volumique. Poser un bécher sec sur la balance et tarer. Y verser 10,0 mL de liquide prélevés à la pipette jaugée. Noter la masse \(m\).
Ébullition. Chauffer doucement quelques mL de liquide (avec de la pierre ponce) sur la plaque, jamais avec une flamme (l'un des liquides peut être inflammable). Relever la température chaque minute.
Arrêter le chauffage si le liquide n'a pas bouilli à 120 °C.
FlaconABCD
\(m\) pour 10,0 mL (g)
Ébullition (°C)
Si tu ne peux pas faire l'expérience

Jeu de données pédagogique Masses de 10,0 mL : A 9,98 g ; B 7,88 g ; C 12,61 g ; D 10,62 g. Ébullition : A palier à 100 °C ; B palier à 78 °C ; C pas d'ébullition avant 120 °C ; D commence à bouillir vers 101 °C, puis la température continue de monter lentement. Valeurs construites à partir de la table de référence, avec des écarts de mesure réalistes.

Table de référence (20 °C, pression normale)
Espèceρ (g/mL)T d'ébullition (°C)
Eau1,00100
Éthanol0,7978
Acétone0,7856
Cyclohexane0,7881
Glycérol1,26290
Q1
Pourquoi tare-t-on la balance avec le bécher vide ? Pourquoi utilise-t-on une pipette jaugée plutôt qu'une éprouvette graduée ?

Tarer remet l'affichage à zéro avec le bécher posé : la balance indique ensuite directement la masse du liquide seul. La pipette jaugée délivre un volume beaucoup plus précis (10,00 ± 0,02 mL environ) qu'une éprouvette (± 0,2 mL ou plus) : sur 10 mL, une erreur de 0,2 mL fausserait la masse volumique de 2 %, assez pour confondre deux espèces.

2
Activité 1 — Masse volumique et densité d'un flacon
≈ 10 min · Niveau 1 : variables, condition simple
Ce que fait le programme

À partir de la pesée du flacon B, il calcule la masse volumique et la densité, puis indique si ce liquide flotterait sur l'eau (s'il ne s'y mélangeait pas). Comment lire le résultat ? Deux nombres et une phrase.

À faire : complète le calcul de rho, exécute, puis teste avec le flacon C (12,61 g).

Indice 1 — physique. \(\rho = \dfrac{m}{V}\).
Indice 2 — code. Le volume s'appelle V ; en g et en mL, on obtient directement des g/mL.
Indice 3 — code. rho = m / V
Correction de l'activité 1
m = 7.88
V = 10.0
rho_eau = 1.00

rho = m / V
d = rho / rho_eau

print("rho =", round(rho, 3), "g/mL | d =", round(d, 3))
if d < 1:
    print("Moins dense que l'eau : il flotterait dessus.")
else:
    print("Plus dense que l'eau : il coulerait au fond.")

Résultats attendus. B : \(\rho = 0{,}788\ \text{g/mL}\), \(d = 0{,}788\), il flotterait. C : \(\rho = 1{,}261\ \text{g/mL}\), il coulerait.

Interprétation. La densité est un rapport sans unité ; elle vaut la masse volumique en g/mL parce que celle de l'eau vaut 1,00 g/mL. B est compatible avec trois espèces de la table (éthanol, acétone, cyclohexane) : une seule mesure ne suffit pas.

Erreurs fréquentes. Diviser par 10 000 en croyant convertir en litres : le résultat (0,000 788) n'a plus d'unité cohérente.

3
Activité 2 — Les quatre flacons
≈ 15 min · Niveau 2 : listes, boucle, conditions
Ce que fait le programme

Il calcule la masse volumique des quatre flacons et les classe : moins dense que l'eau, comme l'eau (à ± 0,01 g/mL), ou plus dense. Comment lire le résultat ? Une ligne par flacon.

À faire : complète le calcul de rho dans la boucle, exécute, puis réponds à Q2.

Indice 1 — physique. Pour chaque flacon, \(\rho_i = m_i / V\).
Indice 2 — code. Le volume est le même pour tous les flacons : V.
Indice 3 — code. rho = m[i] / V
Correction de l'activité 2
flacons = ["A", "B", "C", "D"]
m = [9.98, 7.88, 12.61, 10.62]
V = 10.0

for i in range(len(flacons)):
    rho = m[i] / V
    if rho < 0.99:
        classe = "moins dense que l'eau"
    elif rho <= 1.01:
        classe = "comme l'eau"
    else:
        classe = "plus dense que l'eau"
    print("Flacon", flacons[i], ": rho =", round(rho, 3), "g/mL ->", classe)

Résultats attendus. A : 0,998 (comme l'eau) ; B : 0,788 (moins dense) ; C : 1,261 (plus dense) ; D : 1,062 (plus dense).

Interprétation. A a la masse volumique de l'eau ; C celle du glycérol. D est plus dense que l'eau mais ne correspond à aucune espèce de la table : premier indice que ce n'est peut-être pas un corps pur. elif (« sinon si ») permet d'enchaîner trois cas.

Erreurs fréquentes. Tester rho == 1.00 : à cause des incertitudes, A (0,998) ne serait jamais classé « comme l'eau ». On compare toujours avec une tolérance.

Q2
Peut-on déjà conclure pour chacun des quatre flacons ? Lesquels restent incertains, et pourquoi ?

A est probablement de l'eau et C probablement du glycérol, mais une seule grandeur reste fragile. B hésite entre éthanol, acétone et cyclohexane (0,78 à 0,79 g/mL). D ne correspond à aucune espèce de la table : un autre corps pur, ou un mélange. La température d'ébullition va permettre de trancher.

4
Activité 3 — Courbes de chauffage : corps pur ou mélange ?
≈ 15 min · Niveau 3 : tracer et comparer deux courbes
Ce que fait le programme

Il trace la température en fonction du temps pendant le chauffage des flacons A et D, avec un zoom sur la zone 80 – 105 °C. Pourquoi ? Un corps pur bout à température constante (palier horizontal) ; un mélange bout sur une plage de températures. Comment le lire ? On compare la forme des deux courbes après le début de l'ébullition.

À faire : complète la ligne qui trace la courbe du flacon D, exécute, puis compare les deux courbes.

Indice 1 — physique. On trace la température du flacon D en fonction du même temps t.
Indice 2 — code. La liste des températures du flacon D s'appelle T_D.
Indice 3 — code. plt.plot(t, T_D, 'o-', color='red', label='flacon D')
Correction de l'activité 3
import matplotlib.pyplot as plt

t = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
T_A = [20, 38, 55, 71, 86, 97, 100, 100, 100, 100, 100]
T_D = [20, 37, 53, 69, 84, 96, 101.2, 101.6, 102.0, 102.5, 103.0]

plt.plot(t, T_A, 'o-', color='navy', label='flacon A')
plt.plot(t, T_D, 'o-', color='red', label='flacon D')
plt.title("Courbes de chauffage")
plt.xlabel("t (min)")
plt.ylabel("température (°C)")
plt.ylim(80, 105)                       # zoom sur le début de l'ébullition
plt.legend()
plt.grid()
plt.show()

Résultat attendu. La courbe de A présente un palier horizontal à 100 °C à partir de 6 min. Celle de D continue de monter lentement pendant l'ébullition, de 101,2 à 103,0 °C.

Interprétation. A bout à température constante : c'est un corps pur, et 100 °C confirme l'eau. D bout sur une plage de températures, au-dessus de 100 °C : c'est un mélange. Sa masse volumique (1,062 g/mL) et son ébullition au-dessus de 100 °C sont caractéristiques d'une eau salée : en s'évaporant, l'eau laisse une solution de plus en plus concentrée, dont la température d'ébullition augmente.

Erreurs fréquentes. Tracer plt.plot(T_D, t) : les axes sont inversés, et le palier devient une droite verticale difficile à interpréter.

5
Activité 4 — Une fonction qui identifie
≈ 20 min · Niveau 4 : fonction, parcours d'une table, tolérances
Ce que fait le programme

La fonction identifier(rho, teb) parcourt la table de référence. Une espèce est retenue si la masse volumique mesurée est à au plus 0,02 g/mL de la valeur de référence et si la température d'ébullition en est à au plus 2 °C. Si l'ébullition n'a pas été observée (teb = 0), seule la masse volumique est comparée. Comment lire le résultat ? La liste des espèces compatibles avec chaque flacon : une seule, plusieurs, ou aucune.

À faire : complète le calcul de ecart_rho, exécute, puis réponds à Q3.

Indice 1 — physique. L'écart est la distance entre la valeur mesurée et la valeur de référence de l'espèce i, sans tenir compte du signe.
Indice 2 — code. La masse volumique de référence de l'espèce i est rho_ref[i].
Indice 3 — code. ecart_rho = abs(rho - rho_ref[i])
Correction de l'activité 4
noms = ["eau", "éthanol", "acétone", "cyclohexane", "glycérol"]
rho_ref = [1.00, 0.79, 0.78, 0.78, 1.26]
teb_ref = [100, 78, 56, 81, 290]

def identifier(rho, teb):
    compatibles = []
    for i in range(len(noms)):
        ecart_rho = abs(rho - rho_ref[i])
        if teb == 0:
            ecart_teb = 0
        else:
            ecart_teb = abs(teb - teb_ref[i])
        if ecart_rho <= 0.02 and ecart_teb <= 2:
            compatibles.append(noms[i])
    return compatibles

print("A :", identifier(0.998, 100))
print("B (masse volumique seule) :", identifier(0.788, 0))
print("B :", identifier(0.788, 78))
print("C :", identifier(1.261, 0))
print("D :", identifier(1.062, 101))

Résultats attendus. A : ['eau'] ; B avec la masse volumique seule : ['éthanol', 'acétone', 'cyclohexane'] ; B avec l'ébullition : ['éthanol'] ; C : ['glycérol'] ; D : [].

Interprétation. Le croisement de deux grandeurs lève l'ambiguïté pour B : c'est très probablement de l'éthanol. Pour C, une seule grandeur est disponible : « probablement du glycérol », à confirmer (par exemple sa température de fusion, 18 °C). Pour D, la liste vide signifie qu'aucune espèce de la table ne convient : avec l'activité 3, on conclut à un mélange.

Erreurs fréquentes. Oublier abs : un écart négatif (mesure plus petite que la référence) serait toujours « inférieur à 0,02 », et toutes les espèces plus denses seraient déclarées compatibles.

Q3
Remplace la tolérance de 2 °C par 5 °C et relance le programme pour B. Que se passe-t-il ? Que montre cet essai sur le choix des tolérances ?

Avec 5 °C, B devient compatible avec l'éthanol (78 °C) et le cyclohexane (81 °C, écart de 3 °C) : on ne peut plus conclure. Une tolérance trop large rend la méthode incapable de distinguer des espèces voisines ; trop étroite, elle rejetterait la bonne espèce à cause des incertitudes de mesure. La tolérance doit correspondre à la précision réelle des mesures.

6
Activité 5 — Le programme de Tom
≈ 15 min · Niveau 5 : trouver et corriger des erreurs
La situation

Tom n'a pas taré la balance : il a pesé le bécher vide (48,35 g), puis le bécher contenant 10,0 mL du flacon B (56,23 g). Il veut la masse volumique en g/mL puis en kg/m³. Son programme contient quatre erreurs : deux l'empêchent de fonctionner, deux donnent un résultat faux sans message. Résultat attendu : 0,788 g/mL, soit 788 kg/m³.

Indice 1 — méthode. Corrige d'abord ce que Python signale, une erreur à la fois. Puis compare à la valeur attendue.
Indice 2 — où chercher. Une parenthèse est-elle restée ouverte ? Python distingue-t-il majuscules et minuscules dans les noms de variables ? Comment obtient-on la masse du liquide seul ? Combien de kg/m³ vaut 1 g/mL ?
Indice 3 — les quatre corrections. Fermer la parenthèse du premier print ; rho_si → rho_SI ; m = m_plein - m_vide ; rho_SI = rho * 1000.
Correction de l'activité 5
m_vide = 48.35
m_plein = 56.23
V = 10.0

m = m_plein - m_vide             # erreur 3 : on retranche la masse du bécher
rho = m / V
rho_SI = rho * 1000              # erreur 4 : 1 g/mL = 1 000 kg/m3

print("rho =", round(rho, 3), "g/mL")        # erreur 1 : parenthèse
print("rho =", round(rho_SI), "kg/m3")       # erreur 2 : rho_si n'existe pas

Erreur 1 (bloquante). La parenthèse du premier print n'est pas fermée : erreur de syntaxe.

Erreur 2 (bloquante). rho_si n'existe pas (Python distingue majuscules et minuscules) : NameError.

Erreur 3 (silencieuse). La masse du liquide est la différence des deux pesées : en additionnant, on compte deux fois le bécher.

Erreur 4 (silencieuse). \(1\ \text{g/mL} = 1\ \text{kg/L} = 1\,000\ \text{kg/m}^3\) : il faut multiplier par 1 000.

Résultat après correction. rho = 0.788 g/mL et rho = 788 kg/m3.

Q4
Après correction des erreurs 1 et 2, le programme affiche « rho = 10.458 g/mL » et « rho = 1046 kg/m3 ». Quels indices montrent que c'est faux ?

10,5 g/mL, c'est presque la masse volumique du plomb (11,3) : impossible pour un liquide incolore de la table, dont aucune espèce ne dépasse 1,26 g/mL. Et les deux lignes se contredisent : 10,458 g/mL devrait donner 10 458 kg/m³, pas 1 046. Le premier résultat révèle une erreur sur la masse (le bécher compté deux fois), le second une erreur de conversion.

7
Conclusion et auto-évaluation
≈ 10 min
Q5
Réponds à la problématique : que contiennent les flacons A, B, C et D, et lesquels sont des corps purs ? Indique pour chacun le niveau de certitude.

A : masse volumique 0,998 g/mL et palier d'ébullition à 100 °C : corps pur, très probablement de l'eau (deux grandeurs concordantes). B : 0,788 g/mL et ébullition à 78 °C : corps pur, très probablement de l'éthanol ; la masse volumique seule ne suffisait pas, c'est l'ébullition qui a tranché. C : 1,261 g/mL, pas d'ébullition avant 120 °C : probablement du glycérol (une seule grandeur mesurée, l'absence d'ébullition est cohérente avec 290 °C ; à confirmer). D : 1,062 g/mL, ébullition sur une plage au-dessus de 100 °C, aucune espèce de la table compatible : c'est un mélange, probablement une eau salée. Une identification fiable croise au moins deux grandeurs et se conclut avec ses limites : « très probablement ».

Grille d'auto-évaluation

A = je sais faire seul · B = avec un peu d'aide · C = partiellement · D = à retravailler.

CompétenceABCD
Mesurer une masse volumique (pipette, balance)
Comparer une mesure à une référence avec une tolérance
Distinguer corps pur et mélange par une courbe de chauffage
Croiser deux grandeurs pour identifier une espèce
Écrire et utiliser une fonction Python
Repérer une erreur par un ordre de grandeur
Clique sur A, B, C ou D pour chaque compétence.
Fiche professeur

Organisation

Durée totale estimée : 120 min. En séance de 1 h 30 : partie expérimentale et activités 1 à 3 ; activités 4 et 5 et conclusion en fin de séance, à la maison ou en séance suivante. Le parcours « à l'aise » (activité 1 facultative) fait gagner environ 10 min.

Préparation

Préparer les quatre flacons : A eau distillée, B éthanol, C glycérol, D eau salée à environ 90 g/L. Étiqueter seulement A, B, C, D. Prévoir une plaque chauffante par îlot.

Sécurité

Éthanol inflammable : plaque chauffante uniquement, aucune flamme dans la salle. Lunettes pendant le chauffage. Le glycérol n'est pas chauffé au-delà de 120 °C.

Points de vigilance

La pipette jaugée doit être rincée avec le liquide à prélever. Le palier de l'eau peut apparaître à 98–99 °C selon l'altitude et l'étalonnage de la sonde : c'est la constance qui compte, pas la valeur exacte.

Différenciation

Aide : Donner la table de référence imprimée ; pour l'activité 4, faire d'abord la recherche « à la main » pour le flacon B.

Approfondissement : Proposer un cinquième flacon (acétone) et faire retrouver qu'il bout à 56 °C ; discuter la tolérance de 2 °C.

Évaluation (sur 20)

Q5 (identification argumentée, 8 pts) ; activité 4 (fonction, 6 pts) ; activité 5 (4 erreurs, 4 pts) ; soin des mesures (2 pts).

Les corrections détaillées des activités Python et des questions sont dans les encadrés de chaque partie.

TP terminé, bravo !

Pour consolider : exercices 2, 5 et 9, puis le quiz du cours.

Exercices corrigés Retour au cours