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 :

SituationSyntaxe correcteErreur classique
Nombre décimal1.3e-21,3e-2 (virgule = erreur Python)
Puissancev**2v^2 (opérateur inexistant en Python)
Multiplicationm * gmg (non reconnu)
Convertir une saisiefloat(input(...))input(...) seul (renvoie du texte)
Ajouter à une listeliste.append(valeur)Oubli du .append()
Notation scientifique1.6e-191,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

  • Charge et décharge d'un condensateur : équation différentielle et méthode
  • /fiches-physique-chimie-terminale/cinetique-chimique/">cinétique chimique pour le contexte physique.

    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 :

    CommandeUsage
    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.