Ce que le bac demande vraiment en Python

Le correcteur n'attend pas que vous sachiez programmer. Il attend que vous compreniez la logique d'un algorithme et que vous puissiez compléter ou lire un programme court. En pratique, trois types de questions reviennent systématiquement.

Type 1 Compléter un programme à trous. Le plus fréquent. On vous donne un programme partiellement rédigé, avec des lignes vides matérialisées par des pointillés. Il faut identifier ce qui manque : une condition de boucle, une ligne de mise à jour, un return. La logique est toujours guidée par le contexte mathématique (la relation de récurrence, le seuil à atteindre, la somme à calculer).

Type 2 Lire et interpréter un programme. On vous demande ce que renvoie le programme pour une valeur donnée, ou ce que calcule une variable à la fin de l'exécution. Il faut simuler mentalement l'exécution, tour de boucle par tour de boucle.

Type 3 Écrire un programme court. Plus rare. On vous demande de rédiger un algorithme de seuil ou de somme, souvent après une question de cours sur la suite concernée. La structure est toujours la même, seuls les paramètres changent.

La grande majorité des questions relève du type 1 ou 2. Comprendre la structure des deux algorithmes classiques (seuil et somme) couvre l'essentiel de ce qui peut tomber.

La syntaxe indispensable

Le tableau suivant couvre l'intégralité de la syntaxe utile pour le bac. Aucune bibliothèque complexe, aucune notion avancée n'est attendue au-delà de ce périmètre.

ÉlémentSyntaxe PythonPoint de vigilance
Affectationu = 5Le signe = affecte, il n'exprime pas une égalité mathématique
Puissanceu**2Jamais ^ — c'est une erreur de syntaxe en Python
Multiplication2*uL'astérisque est obligatoire, 2u provoque une erreur
Nombre décimal0.92Toujours un point, jamais une virgule
Racine carréesqrt(u)Nécessite from math import * en début de programme
Valeur absolueabs(u - limite)Utile pour les seuils de précision
Boucle bornéefor i in range(n):range(n) va de 0 à n−1 ; pour aller jusqu'à n, écrire range(n+1)
Boucle non bornéewhile condition:La condition est celle qui maintient la boucle, pas celle qu'on cherche
Ajouter à une listeL.append(x)Ajoute x à la fin de la liste L
Longueur d'une listelen(L)Retourne le nombre d'éléments
Définir une fonctiondef f(x):Le bloc doit être indenté ; se termine par return

Une seule erreur de syntaxe invalide un programme entier. Les deux erreurs les plus fréquentes : l'oubli des deux-points (:) en fin de ligne def, for ou while, et l'utilisation d'une virgule à la place d'un point pour les décimaux.

Les deux algorithmes classiques à maîtriser

L'algorithme de seuil

C'est l'algorithme le plus fréquent au bac. Son but : trouver le premier rang $n$ à partir duquel les termes d'une suite $u_n$ dépassent (ou passent en dessous de) une valeur limite.

La logique centrale est une inversion : si on cherche quand $u_n$ dépasse 20, on écrit while u <= 20:, c'est-à-dire "tant que la condition n'est pas atteinte, continue". Dès que la condition cherchée devient vraie, la boucle s'arrête.

Structure type :

def seuil():
    u = u0          # valeur initiale (premier terme)
    n = 0           # rang initial
    while u <= 20: # condition inverse de ce qu'on cherche
        u = f(u)    # relation de récurrence
        n = n + 1   # on passe au rang suivant
    return n        # renvoie le premier rang qui dépasse 20

Pour compléter ce type de programme à l'examen, il faut identifier trois éléments dans l'énoncé :

  • La valeur initiale $u_0$ (initialisation de u)
  • La relation de récurrence (ligne u = f(u))
  • Le seuil à atteindre (condition du while)

Ces trois informations sont toujours données dans le contexte mathématique de l'exercice.

L'algorithme de somme

Moins fréquent que le seuil, mais présent régulièrement dans les exercices de suites. Il s'agit de calculer $S = u_0 + u_1 + \cdots + u_n$.

La logique repose sur une variable d'accumulation. On initialise $S$ à $u_0$, puis on ajoute chaque terme au fur et à mesure.

Structure type :

def calcul_somme(n):
    u = u0                    # premier terme
    S = u0                    # on commence la somme avec u0
    for i in range(1, n + 1): # on calcule u1 jusqu'à un
        u = f(u)              # terme suivant
        S = S + u             # on l'ajoute à la somme
    return S

Point de vigilance sur range() : range(1, n+1) fait varier i de 1 à n inclus. Si on écrit range(1, n), le terme $u_n$ est exclu — erreur classique qui fausse le résultat sans message d'erreur.

Les 4 erreurs qui font perdre des points

Erreur 1 : la condition du while à l'envers. Si on cherche le rang $n$ tel que $u_n > 100$, il faut écrire while u <= 100: et non while u > 100:. La boucle exprime la condition de continuation, pas la condition d'arrêt. Lire mentalement "tant que..." avant d'écrire la condition.

Erreur 2 : l'ordre des instructions dans la boucle. Pour un algorithme de seuil, la mise à jour du terme doit précéder l'incrémentation du compteur. Si on inverse les deux lignes, le rang retourné est décalé de 1. Vérifier systématiquement l'ordre en simulant le premier tour.

Erreur 3 : la borne de range(). range(n) exclut n. Pour calculer jusqu'au rang n inclus quand on a déjà initialisé $u_0$, il faut range(1, n+1). Choisir la mauvaise borne décale le calcul sans erreur apparente.

Erreur 4 : l'oubli de n = n + 1 dans la boucle while. Contrairement à la boucle for, la boucle while n'incrémente pas automatiquement de compteur. Si on oublie cette ligne, le programme tourne à l'infini (boucle infinie) et le correcteur ne peut pas exécuter le code.

Méthode de résolution en 4 étapes

Quand une question Python apparaît dans un sujet, la démarche suivante permet de traiter la question en 3 à 5 minutes.

1

Identifier le type d'algorithme (seuil, somme, calcul de terme) à partir du contexte mathématique et du verbe de la question : "trouver le premier rang", "calculer la valeur", "compléter le programme".

2

Repérer les valeurs dans l'énoncé : valeur initiale $u_0$, relation de récurrence, seuil ou nombre de termes. Ces informations figurent toujours dans les questions précédentes de l'exercice.

3

Associer chaque information à sa ligne dans le programme : $u_0$ à l'initialisation de u, la relation au corps de boucle, le seuil à la condition du while.

4

Vérifier mentalement en simulant les 2 premiers tours de boucle. Si les valeurs obtenues correspondent à ce que la suite doit faire, la réponse est correcte. Cette vérification prend 30 secondes et évite la plupart des erreurs.