Ce que le bac peut vous demander en Python
Il y a trois types de tâches possibles, que ce soit à l'écrit ou à l'ECE. Les comprendre permet de calibrer l'effort.
Compléter un script existant. C'est le cas le plus fréquent, notamment en ECE. Le code est partiellement rédigé, avec des commentaires indiquant ce que chaque bloc doit faire. Il faut compléter les lignes manquantes (une instruction, une condition, un calcul). Pour réussir, il faut savoir lire du code et comprendre ce qui manque.
Lire et interpréter un script. L'énoncé fournit un programme complet et pose des questions : que calcule cette variable ? Que représente ce graphique ? À quoi sert cette boucle ? Ce type de question teste la compréhension, pas la capacité à coder.
Écrire une portion de code. Plus rare à l'écrit, mais possible. Il s'agit généralement d'une ou deux lignes à produire à partir d'une formule physique ou d'une consigne précise.
Ce que le bac ne demande jamais : écrire un programme de zéro, de la première à la dernière ligne.
La syntaxe de base à avoir en tête
Voici les points techniques sur lesquels les élèves perdent le plus de points :
| Situation | Syntaxe correcte | Erreur classique |
|---|---|---|
| Nombre décimal | 1.3e-2 | 1,3e-2 (virgule = erreur Python) |
| Puissance | v**2 | v^2 (opérateur inexistant en Python) |
| Multiplication | m * g | mg (non reconnu) |
| Convertir une saisie | float(input(...)) | input(...) seul (renvoie du texte) |
| Ajouter à une liste | liste.append(valeur) | Oubli du .append() |
| Notation scientifique | 1.6e-19 | 1,6 × 10⁻¹⁹ (illisible pour Python) |
Un seul caractère mal placé suffit pour que le code ne s'exécute pas. À l'ECE, c'est le type d'erreur qui coûte des points facilement récupérables.
Les scripts types à connaître
En mécanique
Calcul des coordonnées du vecteur vitesse. C'est le script le plus fréquent quand l'exercice porte sur l'étude d'un mouvement à partir d'un pointage vidéo. La formule de base est la dérivée centrée :
# Calcul de la vitesse en chaque point intermédiaire
for i in range(1, len(x) - 1):
vx.append((x[i+1] - x[i-1]) / (t[i+1] - t[i-1]))
vy.append((y[i+1] - y[i-1]) / (t[i+1] - t[i-1]))
La liste de vitesses a alors un élément de moins aux deux extrémités — piège classique de synchronisation des listes.
Bilan énergétique. Le script type calcule Ec = 0.5 * m * v**2, Epp = m * g * z et Em = Ec + Epp à chaque instant, puis superpose les trois courbes sur un même graphique avec plt.plot(). Ce script revient régulièrement car la mécanique (Newton + énergie) est l'un des chapitres les plus fréquents au bac.
Tracé de vecteurs avec plt.quiver(). La syntaxe est :
plt.quiver(x, y, vx, vy, angles='xy', scale_units='xy', scale=1)
Les arguments angles='xy' et scale_units='xy' sont indispensables — sans eux, les vecteurs ne sont pas à l'échelle des axes.
Simulation de chute libre. Utilisation d'une boucle while h > 0 pour incrémenter le temps et mettre à jour l'altitude. Ce script illustre bien la différence entre for (nombre d'itérations connu) et while (condition d'arrêt physique).
En chimie
Détermination de l'avancement maximal et du réactif limitant. Le script compare les rapports stœchiométriques pour chaque réactif et prend le minimum. C'est une traduction directe du tableau d'avancement — aucune difficulté conceptuelle supplémentaire.
# Réactif limitant
x_max_A = n_A / a
x_max_B = n_B / b
x_max = min(x_max_A, x_max_B)
Titrage par la méthode de la dérivée. C'est l'un des scripts les plus demandés à l'ECE chimie. Le principe : calculer dpH/dV en chaque point pour repérer le maximum, qui correspond au volume équivalent.
# Dérivée centrée du pH
for i in range(1, len(pH) - 1):
dph.append((pH[i+1] - pH[i-1]) / (V[i+1] - V[i-1]))
À l'ECE, le code est souvent fourni à moitié : il faut compléter la ligne de calcul de la dérivée ou la ligne plt.plot() qui l'affiche.
Suivi de la vitesse de réaction. Calculer la vitesse volumique de disparition d'un réactif à partir de l'évolution de sa concentration dans le temps — même structure que le calcul de vitesse en mécanique. Voir la fiche Régression linéaire au tableur en ECE : la méthode en 6 étapes
Méthode de Monte-Carlo (incertitudes)
La méthode de Monte-Carlo sert à calculer une incertitude-type composée quand plusieurs grandeurs d'entrée ont chacune leur propre incertitude. Le principe : générer un très grand nombre de tirages aléatoires (typiquement 100 000) pour chaque grandeur, calculer la grandeur de sortie pour chacun, puis prendre l'écart-type de la distribution obtenue.
import numpy as np
N = 100000
m_sim = np.random.normal(m, u_m, N)
g_sim = np.random.normal(g, u_g, N)
Ec_sim = 0.5 * m_sim * v**2
incertitude = np.std(Ec_sim)
Les deux fonctions NumPy à connaître sont np.mean() pour la valeur centrale et np.std() pour l'incertitude.
Ce qu'il faut savoir pour l'ECE en particulier
L'ECE Python a quelques caractéristiques propres que l'écrit n'a pas.
Le code est toujours fourni avec des commentaires. Les lignes commençant par # expliquent ce que le bloc suivant est censé faire. Lire ces commentaires avant de regarder le code est la première chose à faire — ils contiennent souvent la formule à traduire en Python.
Les bibliothèques sont toujours les mêmes. matplotlib.pyplot pour les graphiques (importé comme plt), numpy pour les calculs numériques (importé comme np). Il n'y a jamais de bibliothèque surprise à l'ECE.
Les commandes graphiques à connaître :
| Commande | Usage |
|---|---|
plt.scatter(x, y) | Nuage de points (mesures expérimentales) |
plt.plot(x, y) | Courbe continue (modèle) |
plt.xlabel('...') | Nom de l'axe des abscisses |
plt.ylabel('...') | Nom de l'axe des ordonnées |
plt.title('...') | Titre du graphique |
plt.legend() | Afficher la légende |
plt.show() | Afficher la fenêtre graphique |
La régression linéaire avec np.polyfit(x, y, 1) renvoie un tableau à deux éléments : le coefficient directeur en premier, l'ordonnée à l'origine en second. Si le script demande de récupérer la pente, c'est coeffs[0].
Ne jamais écrire les unités dans le code. Python ne sait traiter que des nombres. Les unités vont dans les titres d'axes (plt.xlabel('Volume (mL)')), jamais dans un calcul.