Progression
0 / 5
🔢
Thème 1
Parité & Divisibilité
Comprendre et utiliser % (modulo) avec if/else
Étape 1Calculer un reste à la main✓
Effectue la division euclidienne de $17$ par $5$ et donne uniquement le reste.
💡 $17 = 5 \times q + r$ avec $0 \leq r < 5$. Trouve $q$ puis $r$.

Solution

$17 = 5 \times 3 + 2$. Le quotient est $3$ et le reste est $\mathbf{2}$.
Étape 2Qu'est-ce que « divisible » veut dire ?✓
On dit que $n$ est divisible par $d$ quand la division euclidienne de $n$ par $d$ donne un reste égal à…

Solution

$n$ est divisible par $d$ signifie exactement que $n = d \times q$, donc le reste est $\mathbf{0}$. Par exemple $15$ est divisible par $5$ car $15 = 5 \times 3 + 0$.
Étape 3Exercices : divisible ou pas ?✓
Parmi les propositions suivantes, laquelle est vraie ?

Solution

$21 = 7 \times 3 + 0$ → reste $0$ → divisible ✓
$17 = 4 \times 4 + 1$ → reste $1$ → pas divisible
$13 = 3 \times 4 + 1$ → reste $1$ → pas divisible
Étape 4L'opérateur % en Python✓
En Python, l'opérateur % calcule exactement le reste de la division euclidienne.
17 % 5 → 2 · 21 % 7 → 0 · 13 % 3 → 1
Que vaut 24 % 6 en Python ?

Solution

$24 = 6 \times 4 + 0$. Reste $= 0$, donc 24 % 6 vaut 0.
Autrement dit : si n % d == 0, c'est que $n$ est divisible par $d$.
Étape 5Compléter la fonction est_divisible✓
Complète les deux trous de la fonction qui teste si n est divisible par d.
Trou 1 : l'opérateur de reste — Trou 2 : la valeur à comparer
divisibilite.py
def est_divisible(n, d):
    if n d == :
        return True
    else:
        return False

Solution

Trou 1 : % (opérateur modulo — le reste)
Trou 2 : 0 (divisible = reste nul)
Ligne complète : if n % d == 0:
Étape 6Lance ton programme !✓
Clique sur ▶ Lancer pour appeler ta fonction et voir le résultat s'afficher dans le terminal.
Python 3 — terminal
>>> est_divisible(21, 7)
>>> est_divisible(17, 4)

Solution

21 % 7 == 0 → True ✓ (21 est divisible par 7)
17 % 4 == 1 ≠ 0 → False ✓ (17 n'est pas divisible par 4)
🐍

Thème complété !

Tu sais utiliser % pour tester la divisibilité en Python.

📈
Thème 2
Fonctions & Calculs
Écrire def f(x), utiliser ** et math.sqrt
Étape 1Calculer une image à la main✓
Soit $f(x) = 2x^2 - 3x + 1$. Calcule $f(3)$ à la main.

Solution

$f(3) = 2 \times 9 - 3 \times 3 + 1 = 18 - 9 + 1 = \mathbf{10}$.
Étape 2Les puissances en Python : **✓
En Python, on n'écrit pas x^2. Le symbole ^ ne signifie pas « puissance » en Python !
À la place, on utilise **.
3**2 → 9 · 2**10 → 1024 · 5**3 → 125
Comment écrit-on $x^2$ en Python ?

Solution

En Python, $x^2$ s'écrit x**2. Le symbole ^ existe mais fait autre chose (opération binaire).
Note : x*x fonctionne aussi, mais x**2 est plus lisible et généralise à toutes les puissances.
Étape 3Écrire f(x) en Python✓
Complète la fonction Python qui calcule $f(x) = 2x^2 - 3x + 1$.
Trou : la formule mathématique traduite en Python
fonction.py
def f(x):
    return

Solution

return 2*x**2 - 3*x + 1
Attention : en Python, on écrit toujours 2*x (avec le *), pas 2x.
Étape 4La racine carrée : math.sqrt✓
Pour calculer une racine carrée, Python a besoin du module math. On l'importe une fois en haut du programme.
import math
math.sqrt(9) → 3.0 · math.sqrt(2) → 1.4142... · math.sqrt(100) → 10.0
Que retourne math.sqrt(49) ?

Solution

$\sqrt{49} = 7$. Python retourne 7.0 (un nombre décimal, même quand le résultat est entier).
Étape 5Calculer la distance $AB$ à la main✓
Soient $A(1\,;\,2)$ et $B(4\,;\,6)$. Calcule la distance $AB$ à la main.
💡 $AB = \sqrt{(x_B - x_A)^2 + (y_B - y_A)^2}$

Solution

$AB = \sqrt{(4-1)^2 + (6-2)^2} = \sqrt{9+16} = \sqrt{25} = \mathbf{5}$.
Étape 6Compléter la fonction distance✓
Complète les deux trous de la fonction qui calcule $AB$.
Trou 1 : le module à importer — Trou 2 : la formule sous la racine (avec **)
distance.py
import

def distance(xA, yA, xB, yB):
    return math.sqrt()

Solution

Trou 1 : math
Trou 2 : (xB-xA)**2 + (yB-yA)**2
On utilise **2 pour élever au carré, et math.sqrt pour la racine.
Étape 7Lance ton programme !✓
Clique sur ▶ Lancer pour appeler tes deux fonctions et voir les résultats.
Python 3 — terminal
>>> f(3)
>>> distance(1, 2, 4, 6)

Solution

f(3) = 2×9 - 3×3 + 1 = 10
distance(1,2,4,6) = sqrt((4-1)²+(6-2)²) = sqrt(25) = 5.0
🐍

Thème complété !

Tu sais utiliser ** pour les puissances et math.sqrt pour les racines.

📐
Thème 3
Géométrie analytique
Tester l'alignement de 3 points avec le déterminant
Étape 1La condition d'alignement✓
Trois points $A$, $B$, $C$ sont alignés si et seulement si le déterminant des vecteurs $\overrightarrow{AB}$ et $\overrightarrow{AC}$ est égal à…
💡 $\det(\overrightarrow{AB}, \overrightarrow{AC}) = x_{AB} \times y_{AC} - y_{AB} \times x_{AC}$

Solution

$A$, $B$, $C$ sont alignés $\Leftrightarrow$ $\det(\overrightarrow{AB}, \overrightarrow{AC}) = \mathbf{0}$.
Si le déterminant est non nul, les vecteurs ne sont pas colinéaires et les points ne sont pas alignés.
Étape 2Calculer $\overrightarrow{AB}$ à la main✓
On prend $A(1\,;\,2)$ et $B(4\,;\,6)$.
Les coordonnées du vecteur $\overrightarrow{AB}$ sont $(x_B - x_A \;;\; y_B - y_A)$.
Quelles sont les coordonnées de $\overrightarrow{AB}$ ?

Solution

$\overrightarrow{AB} = (x_B - x_A \;;\; y_B - y_A) = (4-1 \;;\; 6-2) = \mathbf{(3\,;\,4)}$.
Étape 3Calculer $\overrightarrow{AC}$ à la main✓
Maintenant avec $C(7\,;\,10)$.
Quelles sont les coordonnées de $\overrightarrow{AC}$ ?

Solution

$\overrightarrow{AC} = (x_C - x_A \;;\; y_C - y_A) = (7-1 \;;\; 10-2) = \mathbf{(6\,;\,8)}$.
Étape 4Calculer le déterminant✓
Avec $\overrightarrow{AB} = (3\,;\,4)$ et $\overrightarrow{AC} = (6\,;\,8)$, calcule :
$\det(\overrightarrow{AB}, \overrightarrow{AC}) = x_{AB} \times y_{AC} - y_{AB} \times x_{AC}$
Les points $A$, $B$, $C$ sont-ils alignés ?

Solution

$\det = 3 \times 8 - 4 \times 6 = 24 - 24 = \mathbf{0}$.
Le déterminant est nul → $A$, $B$, $C$ sont alignés.
Étape 5Traduire en Python, étape par étape✓
On calcule d'abord les coordonnées des vecteurs dans des variables, puis le déterminant.
Complète les 4 trous (coordonnées des vecteurs $\overrightarrow{AB}$ et $\overrightarrow{AC}$).
alignement.py
def alignes(xA, yA, xB, yB, xC, yC):
    # Coordonnées du vecteur AB
    xAB =
    yAB =
    # Coordonnées du vecteur AC
    xAC =
    yAC =
    # Déterminant
    det = xAB * yAC - yAB * xAC
    return det == 0

Solution

xAB = xB - xA
yAB = yB - yA
xAC = xC - xA
yAC = yC - yA
Chaque ligne traduit directement la formule mathématique du vecteur.
Étape 6Lance ton programme !✓
Clique sur ▶ Lancer pour tester ta fonction avec deux triplets de points.
Python 3 — terminal
>>> alignes(1, 2, 4, 6, 7, 10)
>>> alignes(0, 0, 1, 2, 3, 4)

Solution

1ᵉʳ appel : $\det = 3\times8 - 4\times6 = 0$ → True (alignés)
2ᵉ appel : $\det = 1\times4 - 2\times3 = -2 \neq 0$ → False (non alignés)
🐍

Thème complété !

Tu sais calculer un déterminant et tester l'alignement en Python !

🔁
Thème 4
Boucles & Accumulation
Additionner des nombres avec une boucle for
Étape 1Calculer une somme à la main✓
Calcule à la main $S = 1 + 2 + 3 + 4 + 5$.

Solution

$S = 1+2+3+4+5 = \mathbf{15}$.
Étape 2L'idée du compteur✓
Quand tu as calculé $1+2+3+4+5$, tu as sûrement fait ça dans la tête :
Commence à $S = 0$
Ajoute $1$ → $S = 1$
Ajoute $2$ → $S = 3$
Ajoute $3$ → $S = 6$
Ajoute $4$ → $S = 10$
Ajoute $5$ → $S = 15$
Avant d'ajouter quoi que ce soit, on démarre toujours $S$ à…

Solution

On démarre à S = 0 parce qu'on n'a encore rien ajouté. C'est comme un verre vide avant de le remplir.
Étape 3La boucle for et range()✓
En Python, for i in range(1, 6): fait prendre à i les valeurs $1, 2, 3, 4, 5$ une par une.
range(1, 6) génère : 1, 2, 3, 4, 5 (6 est exclu)
range(1, 4) génère : 1, 2, 3 (4 est exclu)
Quelles valeurs génère range(2, 5) ?

Solution

range(2, 5) génère 2, 3, 4. La borne supérieure (5) est toujours exclue.
Étape 4Comprendre S += i✓
La ligne S += i est un raccourci Python. Elle signifie exactement :
S += i  est identique à  S = S + i

Exemple : si S = 3 et i = 4, après S += i, S vaut 7.
Si S = 10 et i = 5, que vaut S après S += i ?

Solution

S += i signifie S = S + i = 10 + 5 = 15.
Étape 5Compléter la boucle pour additionner 1 à 5✓
Complète les deux trous pour que la fonction calcule $1 + 2 + 3 + 4 + 5$.
Trou 1 : la valeur de départ de S — Trou 2 : la borne dans range pour inclure 5
somme.py
def somme_jusqu_a_5():
    S =
    for i in range(1, ):
        S += i  # = S = S + i
    return S

Solution

Trou 1 : 0 (le compteur démarre vide)
Trou 2 : 6 (car range(1, 6) génère 1, 2, 3, 4, 5 — 6 est exclu)

Trace d'exécution : $S=0 \to 1 \to 3 \to 6 \to 10 \to 15$.
Étape 6Lance ton programme !✓
Clique sur ▶ Lancer pour exécuter ta fonction. Compare le résultat avec celui que tu avais trouvé à la main à l'Étape 1 !
Python 3 — terminal
>>> somme_jusqu_a_5()

Solution

La boucle additionne 1+2+3+4+5 = 15. Même résultat qu'à l'Étape 1 !
🐍

Thème complété !

Tu sais construire une boucle for avec un accumulateur en Python !

🎲
Thème 5
Probabilités & Simulation
Simuler un lancer de dé — import random, randint
Étape 1Probabilité théorique d'un dé✓
On lance un dé équilibré à 6 faces (numérotées 1 à 6). Quelle est la probabilité d'obtenir un nombre pair ?

Solution

Issues paires : $\{2, 4, 6\}$ — 3 issues sur 6. $P(\text{pair}) = \dfrac{3}{6} = \dfrac{1}{2}$.
Étape 2Simuler avec la loi des grands nombres✓
Pour estimer une probabilité, on répète l'expérience un grand nombre de fois et on calcule la fréquence.
En 1000 lancers, on obtient 487 fois un résultat pair. Quelle est la fréquence observée ?

Solution

Fréquence $= \dfrac{487}{1000} = 0{,}487$. Proche de $0{,}5$ mais pas exactement (c'est une simulation !).
Étape 3random.randint : tirer au sort✓
random.randint(a, b) tire un entier au hasard entre $a$ et $b$ inclus les deux bornes.
import random
random.randint(1, 6) → peut donner 1, 2, 3, 4, 5 ou 6
random.randint(0, 1) → peut donner 0 ou 1 (pile ou face)
Pour simuler un dé à 10 faces (numérotées 1 à 10), quelle instruction utiliser ?

Solution

random.randint(1, 10) — les deux bornes sont incluses, donc ça tire bien dans $\{1, 2, \ldots, 10\}$.
Étape 4Compléter la simulation✓
Complète les deux trous pour simuler n lancers d'un dé à 6 faces et compter les résultats pairs.
Trou 1 : le tirage aléatoire — Trou 2 : tester si de est pair avec %
simulation_de.py
import random

def freq_pair(n):
    compteur = 0
    for i in range(n):
        de =
        if :
            compteur += 1
    return compteur / n

Solution

Trou 1 : random.randint(1, 6)
Trou 2 : de % 2 == 0 — on réutilise le % du Thème 1 !
Étape 5Lance ta simulation !✓
Clique plusieurs fois sur ▶ Lancer. Observe que le résultat change à chaque fois — et reste toujours proche de 0.5.
Python 3 — terminal
>>> freq_pair(1000)

Solution

Le résultat varie à chaque lancer car les tirages sont aléatoires — c'est normal et attendu.
Plus n est grand, plus la fréquence se rapproche de $\frac{1}{2} = 0{,}5$ (loi des grands nombres).
🎉

Exerciseur complété !

Tu as maîtrisé les 5 thèmes Python du programme de Seconde. Bravo !

🏠