config += "3p" + str(nb) He · Ne · Ar
Seconde · Chapitre 4 · TP numérique

Retrouver la périodicité avec Python

Mendeleïev a rangé les éléments en lignes et en colonnes en observant leurs propriétés. Avec des mesures réelles et un programme que tu vas écrire, tu vas retrouver d'où vient cette organisation.

≈ 1 h 45 en tout5 activités PythonDonnées réelles (NIST)Python s'exécute dans la page
← Tous les cours ← Retour au cours
Partie 1
Problématique

Pourquoi des propriétés semblables reviennent-elles régulièrement quand on range les éléments par numéro atomique croissant ?

Objectifs

  • Déterminer la composition d'un noyau et la masse d'un atome à partir de \(A\) et \(Z\).
  • Exploiter un graphique de données réelles pour mettre en évidence une périodicité.
  • Écrire un programme qui construit la configuration électronique d'un atome (\(Z \le 18\)).
  • Relier le nombre d'électrons de valence à la position dans le tableau périodique.

Compétences travaillées

  • S'approprier : comprendre une grandeur nouvelle (énergie d'ionisation).
  • Réaliser : programmer avec listes, boucles et conditions.
  • Analyser : repérer une régularité sur un graphique.
  • Valider : contrôler un programme en le confrontant au tableau périodique.
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). Tes modifications sont gardées dans ce navigateur. 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
Observation : une famille qui se ressemble
≈ 10 min · démonstration du professeur ou vidéo

Démonstration

Dans un grand cristallisoir d'eau additionnée de quelques gouttes de phénolphtaléine, le professeur dépose successivement un tout petit morceau (taille d'un grain de riz) de lithium, puis de sodium. Le potassium, trop dangereux, est observé en vidéo.

  • Les trois métaux réagissent vivement avec l'eau en dégageant un gaz (du dihydrogène).
  • La solution devient rose : il s'est formé une espèce basique.
  • La réaction est de plus en plus violente : lithium < sodium < potassium.

Sécurité

Expérience réservée au professeur : lunettes, écran de protection, morceaux minuscules, élèves à distance. Les métaux alcalins sont conservés dans l'huile car ils réagissent avec l'humidité de l'air.

Vidéos de référence : rechercher « réaction des métaux alcalins avec l'eau » sur la chaîne de la Royal Society of Chemistry ou de Lumni.

Q1
Le lithium (\(Z = 3\)) et le sodium (\(Z = 11\)) ont un comportement chimique très semblable. Écris leurs configurations électroniques. Que remarques-tu ?

Lithium : \(1\text{s}^2\,2\text{s}^1\). Sodium : \(1\text{s}^2\,2\text{s}^2\,2\text{p}^6\,3\text{s}^1\). Tous deux ont un seul électron de valence (sur la couche 2 pour Li, 3 pour Na). Ils sont dans la même colonne (colonne 1, les alcalins) : même nombre d'électrons de valence, même comportement chimique. Ce TP va montrer que cette régularité se retrouve aussi dans une grandeur mesurée.

2
Activité 1 — La fiche d'identité d'un noyau
≈ 10 min · Niveau 1 : variables, calculs, print()
Ce que fait le programme

À partir de \(Z\) et \(A\), il calcule le nombre de neutrons \(N = A - Z\), la charge du noyau \(Q = Z \times e\) et la masse approchée de l'atome \(m = A \times m_{\text{nucléon}}\). Pourquoi ? Ce sont les trois calculs de base du chapitre ; le programme les fait sans erreur pour n'importe quel noyau. Comment lire le résultat ? Python écrit les puissances de dix avec la lettre e : 1.67e-27 signifie \(1{,}67\times10^{-27}\).

À faire :

  1. Exécute le programme pour l'aluminium (\(Z = 13\), \(A = 27\)) et vérifie les résultats à la main.
  2. Ajoute le calcul et l'affichage de la charge du noyau, dans une variable Q.
  3. Modifie les valeurs pour l'atome d'or \({}^{197}_{79}\text{Au}\) utilisé par Rutherford.
Indice 1 — physique. Le noyau contient \(Z\) protons, chacun portant la charge élémentaire \(e\).
Indice 2 — variables. Les variables Z et e existent déjà : la nouvelle ligne n'utilise qu'elles.
Indice 3 — code. Q = Z * e puis print("Charge du noyau :", Q, "C").
Correction de l'activité 1
e = 1.602e-19
m_nucleon = 1.67e-27

Z = 79                 # or
A = 197

N = A - Z
m = A * m_nucleon
Q = Z * e              # charge du noyau : Z protons de charge e

print("Protons :", Z, " Neutrons :", N, " Électrons :", Z)
print("Masse de l'atome :", m, "kg")
print("Charge du noyau :", Q, "C")

Résultats attendus. Aluminium : 13 protons, 14 neutrons, masse ≈ 4.509e-26 kg, charge ≈ 2.0826e-18 C. Or : 79 protons, 118 neutrons, masse ≈ 3.2899e-25 kg, charge ≈ 1.26558e-17 C (Python peut afficher quelques chiffres parasites en fin de nombre).

Interprétation. Le noyau d'or porte une charge 79 fois plus grande que celle d'un proton : c'est pour cela qu'il repousse si fortement les particules alpha qui passent près de lui.

Erreurs fréquentes. Écrire 1.602*10^-19 : en Python, ^ n'est pas une puissance. On écrit 1.602e-19 (ou 1.602*10**-19).

3
Activité 2 — Les noyaux des 18 premiers éléments
≈ 15 min · Niveau 2 : listes, boucle, comparaison
Ce que fait le programme

Deux listes contiennent \(Z\) et \(A\) pour l'isotope le plus abondant des 18 premiers éléments. Le programme calcule, pour chacun, le nombre de neutrons \(N\) et le rapport \(N/Z\). Pourquoi ? Pour savoir s'il existe une relation simple entre le nombre de neutrons et le nombre de protons des noyaux stables. Comment lire le résultat ? Un rapport égal à 1 signifie autant de neutrons que de protons.

À faire : complète les deux lignes marquées ..., exécute, puis réponds à Q2.

Indice 1 — physique. Le nombre de neutrons est la différence entre le nombre de nucléons et le nombre de protons.
Indice 2 — listes. Pour le noyau numéro i, le numéro atomique est Z[i] et le nombre de masse A[i].
Indice 3 — code. N = A[i] - Z[i] et rapport = N / Z[i].
Correction de l'activité 2
symboles = ["H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne",
            "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar"]
Z = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
A = [1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40]

for i in range(len(Z)):
    N = A[i] - Z[i]
    rapport = N / Z[i]
    print(symboles[i], " Z =", Z[i], " N =", N, " N/Z =", round(rapport, 2))

Lignes importantes. La même position i dans les trois listes désigne le même élément : symboles[5], Z[5] et A[5] décrivent le carbone.

Résultats attendus. \(N/Z = 0\) pour l'hydrogène (aucun neutron), exactement 1 pour He, C, N, O, Ne, Mg, Si et S, et entre 1,06 et 1,33 pour les autres (1,22 pour l'argon).

Interprétation. Les noyaux légers stables contiennent à peu près autant de neutrons que de protons (\(N/Z\) entre 1 et 1,33). Les noyaux beaucoup plus lourds ont nettement plus de neutrons que de protons : pour l'or (activité 1), \(N/Z = 118/79 \approx 1{,}5\). Ce résultat sera réutilisé au chapitre 14 (transformations nucléaires).

Erreurs fréquentes. Écrire N = A - Z : on soustrait deux listes entières, ce que Python refuse. Il faut travailler élément par élément avec [i].

Q2
Pour quels éléments a-t-on autant de neutrons que de protons ? Entre quelles valeurs reste \(N/Z\) ? Compare avec l'or de l'activité 1.

\(N = Z\) pour l'hélium, le carbone, l'azote, l'oxygène, le néon, le magnésium, le silicium et le soufre. Pour les 18 premiers éléments (sauf H), \(N/Z\) reste proche de 1 (entre 1 et 1,33). Pour des noyaux bien plus lourds comme l'or (\(N/Z \approx 1{,}5\)), il y a nettement plus de neutrons que de protons.

4
Activité 3 — Une mesure qui se répète : l'énergie d'ionisation
≈ 20 min · Niveau 3 : graphique de données réelles
Une grandeur nouvelle (non exigible)

L'énergie de première ionisation d'un atome est l'énergie qu'il faut fournir pour lui arracher un électron. Plus elle est grande, plus l'atome « retient » fortement ses électrons. On l'exprime ici en électronvolts (eV), une unité d'énergie adaptée aux atomes : \(1\ \text{eV} = 1{,}602\times10^{-19}\ \text{J}\).

Données utilisées

Données expérimentales réelles Valeurs mesurées par spectroscopie, issues de la base de données du NIST (National Institute of Standards and Technology, États-Unis), arrondies au millième d'eV.

Ce que fait le programme

Il trace l'énergie d'ionisation en fonction du numéro atomique \(Z\) et écrit le symbole de chaque élément à côté de son point. Pourquoi ? Un graphique permet de repérer d'un coup d'œil une régularité invisible dans un tableau de 18 nombres. Comment le lire ? Repère les maximums et les minimums, et note les éléments correspondants.

À faire : complète le graphique (titre, axes avec unités, grille), puis ajoute les symboles avec une boucle. Réponds ensuite à Q3.

Indice 1 — lecture. En abscisse : le numéro atomique \(Z\) (sans unité). En ordonnée : l'énergie de première ionisation, en eV.
Indice 2 — fonctions. plt.title(...), plt.xlabel(...), plt.ylabel(...), plt.grid(). Pour les symboles : une boucle sur range(len(Z)) avec plt.text(x, y, texte).
Indice 3 — code. for i in range(len(Z)): puis, décalé de 4 espaces, plt.text(Z[i], E[i] + 0.4, symboles[i]).
Correction de l'activité 3
import matplotlib.pyplot as plt

symboles = ["H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne",
            "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar"]
Z = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
E = [13.598, 24.587, 5.392, 9.323, 8.298, 11.260, 14.534, 13.618, 17.423,
     21.565, 5.139, 7.646, 5.986, 8.152, 10.487, 10.360, 12.968, 15.760]

plt.plot(Z, E, 'o-', color='navy')
for i in range(len(Z)):
    plt.text(Z[i], E[i] + 0.4, symboles[i])   # symbole un peu au-dessus du point

plt.title("Énergie de première ionisation des 18 premiers éléments")
plt.xlabel("Numéro atomique Z")
plt.ylabel("Énergie d'ionisation (eV)")
plt.grid()
plt.show()

Résultat attendu. Une courbe en « dents de scie » : trois pics très nets pour He (24,6 eV), Ne (21,6 eV) et Ar (15,8 eV), suivis chaque fois d'une chute brutale vers Li (5,4 eV) et Na (5,1 eV).

Interprétation. Le motif se répète tous les 8 éléments à partir de \(Z = 3\) : c'est une périodicité. Les maximums correspondent aux gaz nobles (colonne 18), qui retiennent très fortement leurs électrons : leur dernière couche est complète, ils sont très stables. Les minimums correspondent aux alcalins (colonne 1), qui perdent facilement leur unique électron de valence : c'est ce qui les rend si réactifs avec l'eau (partie 1).

Erreurs fréquentes. Oublier le décalage de 4 espaces sous le for (IndentationError) ; placer plt.show() avant les réglages.

Q3
Quels éléments correspondent aux maximums ? aux minimums ? Tous les combien d'éléments le motif se répète-t-il ? Relie ces observations aux colonnes du tableau périodique.

Maximums : He, Ne, Ar (gaz nobles, colonne 18). Minimums : Li, Na (alcalins, colonne 1). Le motif se répète tous les 8 éléments (de Li à Ne, puis de Na à Ar) : c'est exactement la longueur des périodes 2 et 3 du tableau. Les éléments d'une même colonne occupent la même place dans chaque motif.

5
Activité 4 — Un programme qui écrit les configurations
≈ 25 min · Niveau 4 : modéliser une règle par un algorithme
Ce que fait le programme

Il applique la règle de remplissage du cours : il parcourt les sous-couches 1s, 2s, 2p, 3s, 3p dans l'ordre et place dans chacune autant d'électrons que possible (2 au plus pour s, 6 au plus pour p), jusqu'à épuisement des \(Z\) électrons. Il compte aussi les électrons de la dernière couche : les électrons de valence. Pourquoi ? Traduire une règle en algorithme oblige à la comprendre parfaitement. Comment lire le résultat ? 2p6 signifie \(2\text{p}^6\).

Deux outils Python utiles

min(a, b) donne le plus petit des deux nombres : min(5, 2) vaut 2. souscouches[i][0] donne le premier caractère du texte souscouches[i] : pour "2p", c'est "2", le numéro de la couche.

À faire : complète les trois lignes marquées .... Teste avec \(Z = 16\) (soufre), puis \(Z = 11\), \(Z = 2\) et \(Z = 18\). Compare avec le tableau périodique du cours.

Indice 1 — règle physique. Dans une sous-couche, on place tous les électrons qui restent… sauf s'il y en a plus que sa capacité : dans ce cas, on la remplit complètement. Ensuite, il reste moins d'électrons à placer.
Indice 2 — variables. Le nombre placé est le plus petit entre reste et capacites[i]. Les électrons de valence s'additionnent tant qu'on reste dans la même couche.
Indice 3 — code. nb = min(reste, capacites[i]) ; reste = reste - nb ; valence = valence + nb.
Correction de l'activité 4
souscouches = ["1s", "2s", "2p", "3s", "3p"]
capacites   = [2, 2, 6, 2, 6]

Z = 16
reste = Z
config = ""
couche_valence = ""
valence = 0

for i in range(len(souscouches)):
    if reste > 0:
        nb = min(reste, capacites[i])          # on remplit au maximum
        config = config + souscouches[i] + str(nb) + " "
        reste = reste - nb
        couche = souscouches[i][0]
        if couche != couche_valence:
            couche_valence = couche
            valence = 0                        # nouvelle couche : on recommence à compter
        valence = valence + nb

print("Z =", Z, "  configuration :", config)
print("électrons de valence :", valence, "  couche n =", couche_valence)

Lignes importantes. min(reste, capacites[i]) traduit exactement la règle « remplir complètement, ou placer ce qui reste ». Le test if reste > 0 évite d'écrire des sous-couches vides. La remise à zéro de valence à chaque nouvelle couche fait qu'à la fin, seuls les électrons de la dernière couche sont comptés.

Résultats attendus. Z = 16 : 1s2 2s2 2p6 3s2 3p4, 6 électrons de valence, couche 3. Z = 11 : 1s2 2s2 2p6 3s1, 1 électron de valence. Z = 2 : 1s2, 2 électrons de valence. Z = 18 : 1s2 2s2 2p6 3s2 3p6, 8 électrons de valence.

Interprétation. La couche n donne la période, le nombre d'électrons de valence donne la colonne (1, 2, ou valence + 10). Le programme retrouve le tableau périodique du cours.

Erreurs fréquentes. Écrire nb = capacites[i] : le programme place alors trop d'électrons dans la dernière sous-couche (12 électrons au lieu de 11 pour le sodium). Écrire reste - nb sans reste = : la variable n'est pas modifiée et la boucle remplit toutes les sous-couches.

Pour aller plus loin. Placer tout le programme dans une boucle for Z in range(1, 19): (en décalant les lignes de 4 espaces) pour afficher d'un coup les 18 configurations, puis tracer valence en fonction de Z : on obtient à nouveau une courbe en dents de scie, de même période que celle de l'activité 3.

Q4
Compare les électrons de valence obtenus pour He, Ne et Ar avec les maximums de l'activité 3. Que peux-tu conclure sur la stabilité des atomes dont la dernière couche est complète ?

He (\(1\text{s}^2\)), Ne (\(\dots 2\text{p}^6\)) et Ar (\(\dots 3\text{p}^6\)) ont une dernière couche complète (2 électrons pour la couche 1, 8 pour les couches 2 et 3). Ce sont exactement les éléments dont l'énergie d'ionisation est maximale : il est très difficile de leur arracher un électron. Une couche externe complète correspond donc à une grande stabilité. C'est le point de départ du chapitre 6 : les autres atomes vont chercher à obtenir cette configuration en formant des ions ou des molécules.

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

Léa a voulu afficher d'un coup les configurations des 18 premiers éléments. Son programme contient quatre erreurs : deux l'empêchent de fonctionner, deux autres donnent des résultats faux ou incomplets sans aucun message. Exécute, lis les messages, corrige une erreur à la fois, puis contrôle les résultats avec le tableau périodique.

Indice 1 — méthode. Corrige d'abord ce que Python signale (ligne indiquée). Ensuite, vérifie deux choses : le dernier élément affiché est-il bien l'argon ? La somme des exposants vaut-elle toujours Z (essaie Z = 11) ?
Indice 2 — où chercher. Une ligne for se termine toujours par :. Le nom d'une liste doit être écrit exactement comme lors de sa création. Relis les capacités des sous-couches p. Que donne range(1, 18) ?
Indice 3 — les quatre corrections. Ajouter : à la fin du second for ; écrire capacites[i] ; capacités [2, 2, 6, 2, 6] ; range(1, 19).
Correction de l'activité 5
souscouches = ["1s", "2s", "2p", "3s", "3p"]
capacites = [2, 2, 6, 2, 6]                 # erreur 3 : une sous-couche p contient 6 électrons

for Z in range(1, 19):                      # erreur 4 : range(1, 19) va de 1 à 18
    reste = Z
    config = ""
    for i in range(len(souscouches)):       # erreur 1 : il manquait les deux-points
        if reste > 0:
            nb = min(reste, capacites[i])   # erreur 2 : la liste s'appelle capacites
            config = config + souscouches[i] + str(nb) + " "
            reste = reste - nb
    print(Z, config)

Erreur 1 (bloquante). Sans : à la fin de la ligne for, Python signale une erreur d'écriture et n'exécute rien.

Erreur 2 (bloquante). capacite (sans s) n'existe pas : « le nom est inconnu ». Python distingue chaque lettre.

Erreur 3 (silencieuse). Avec des capacités de 2 pour les sous-couches p, il n'y a que 10 places au total : à partir de \(Z = 11\), des électrons ne sont jamais placés (pour le sodium : 1s2 2s2 2p2 3s2 3p2, soit 10 électrons au lieu de 11). Aucun message ne le signale : il faut vérifier la somme.

Erreur 4 (silencieuse). range(1, 18) s'arrête à 17 : l'argon manque. En Python, la borne de fin de range n'est jamais atteinte.

Variante. Ajoute après la boucle intérieure : if reste > 0: print("ATTENTION :", reste, "électrons non placés"). Ce test aurait détecté automatiquement l'erreur 3.

Q5
Quelles vérifications « physiques » permettent de détecter les erreurs 3 et 4, que Python ne signale pas ?

Erreur 3 : vérifier que la somme des exposants est égale à Z (règle vue dans le cours) ; dès \(Z = 11\), ce n'est plus le cas. Erreur 4 : vérifier que le programme traite bien les 18 éléments demandés (le dernier doit être l'argon, \(Z = 18\)). Un programme peut fonctionner sans erreur et donner des résultats faux : c'est la connaissance du phénomène qui permet de le contrôler.

7
Conclusion et auto-évaluation
≈ 10 min
Q6
Réponds à la problématique : pourquoi des propriétés semblables reviennent-elles régulièrement quand on range les éléments par numéro atomique croissant ?

Quand \(Z\) augmente d'une unité, on ajoute un électron au cortège. Les électrons remplissent les couches les unes après les autres : quand une couche est complète (2 électrons pour la couche 1, 8 pour les couches 2 et 3), on commence une nouvelle couche, et le nombre d'électrons de valence repart à 1. Ce nombre suit donc un cycle régulier (1, 2, …, 8, puis de nouveau 1…). Or ce sont les électrons de valence qui déterminent le comportement chimique d'un atome et des grandeurs comme l'énergie d'ionisation. Les propriétés reviennent donc périodiquement : c'est l'origine des colonnes (même nombre d'électrons de valence) et des périodes (même couche externe) du tableau de Mendeleïev.

Grille d'auto-évaluation

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

CompétenceABCD
Calculer N, la charge et la masse d'un noyau à partir de A et Z
Traiter des listes de données avec une boucle
Tracer et légender un graphique, y repérer une régularité
Écrire une configuration électronique (Z ≤ 18) et en déduire la position
Traduire une règle en algorithme (min, condition, compteur)
Repérer une erreur silencieuse grâce à une vérification physique
Clique sur A, B, C ou D pour chaque compétence.
Fiche professeur

Organisation

Durée totale estimée : 105 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

Vidéo de la réaction du potassium avec l'eau ; démonstration lithium et sodium préparée sous hotte, cristallisoir avec phénolphtaléine.

Sécurité

Démonstration réservée au professeur : lunettes, écran de protection, morceaux de la taille d'un grain de riz, élèves à distance. Le potassium n'est jamais manipulé en classe.

Points de vigilance

Bien relier position dans le tableau et électrons de valence : c'est le cœur du TP. Les configurations s'arrêtent à Z = 18 (programme de Seconde).

Différenciation

Aide : Donner un extrait du tableau périodique des 18 premiers éléments avec les configurations à compléter.

Approfondissement : Faire prévoir la configuration du potassium et du calcium et discuter pourquoi le modèle de Seconde s'arrête à Z = 18.

Évaluation (sur 20)

Activités 3 et 4 (configurations et familles, 8 pts) ; Q5 (lien colonne / électrons de valence / réactivité, 6 pts) ; activité 5 (4 pts) ; observation de la démonstration (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 6 à 9 (configurations et familles), puis le quiz du cours.

Exercices corrigés Retour au cours