Chapitre 9 | Terminale technologique (enseignement commun) | Mathématiques
Dernière mise à jour : 21 octobre 2026
Une variable est une case mémoire nommée qui contient une valeur. L'affectation (symbole \(\leftarrow\) en langage naturel, = en Python) place une valeur dans une variable.
compteur = 0 # affectation
compteur = compteur + 1 # on modifie la variable à partir de sa valeur actuelle
Types de base : entier (int), flottant (float), booléen (bool, True/False), chaine (str).
def somme_et_compte(liste, seuil):
"""Somme des éléments et nombre d'éléments dépassant un seuil."""
total = 0 # accumulateur (somme)
compteur = 0 # compteur
for x in liste:
total = total + x # accumulation
if x > seuil:
compteur = compteur + 1 # incrémentation du compteur
return total, compteur
Le calcul d'une somme \(\displaystyle\sum_{k=1}^{n} u_k\) correspond exactement à : initialisation (S = 0), boucle (for k in range(1, n+1)), accumulation (S = S + u(k)), puis sortie (return S).
def somme_carres(n):
S = 0
for k in range(1, n + 1):
S = S + k**2
return S
def factorielle(n):
P = 1
for k in range(1, n + 1):
P = P * k
return P
somme_cubes(n) renvoyant \(1^3 + 2^3 + \dots + n^3\). Que renvoie somme_cubes(3) ?
def somme_cubes(n):
S = 0
for k in range(1, n + 1):
S = S + k**3
return S
somme_cubes(3) \(= 1 + 8 + 27 = 36\).
if condition:
# bloc exécuté si la condition est vraie
elif autre_condition:
# sinon si...
else:
# sinon
Les conditions se construisent avec les comparaisons (==, !=, <, <=, >, >=) et les opérateurs logiques and (ET), or (OU), not (NON) — occasion de travailler la logique.
for : on connait le nombre de répétitions.while : on répète tant qu'une condition est vraie (utile quand le nombre d'étapes est inconnu à l'avance).# plus petit n tel que 1,04^n dépasse 2
n = 0
valeur = 1
while valeur < 2:
valeur = valeur * 1.04
n = n + 1
print(n) # 18
mystere([3, 4, 7, 8, 10]) ?
def mystere(liste):
c = 0
for x in liste:
if x % 2 == 0:
c = c + 1
return c
La fonction compte les nombres pairs : \(4\), \(8\), \(10\) → elle renvoie 3.
Une fonction prend des entrées (paramètres) et renvoie une sortie (return). Découper un programme en fonctions (programmation modulaire) permet de décomposer une tâche complexe en tâches simples, réutilisables et testables.
def moyenne(liste):
"""Entrée : une liste de nombres. Sortie : leur moyenne."""
return sum(liste) / len(liste)
def ecart_a_la_moyenne(liste):
"""Réutilise moyenne()."""
m = moyenne(liste)
return [x - m for x in liste]
Entrées / sorties : l'entrée de moyenne est liste, sa sortie est un nombre. Toujours savoir identifier ce qui entre et ce qui sort.
maximum(liste) et minimum(liste).
def maximum(liste):
m = liste[0]
for x in liste:
if x > m:
m = x
return m
def minimum(liste):
m = liste[0]
for x in liste:
if x < m:
m = x
return m
def amplitude(liste):
return maximum(liste) - minimum(liste)
a = [2, 3, 5, 7] # en extension
b = [] # vide, puis ajouts successifs
for k in range(5):
b.append(k**2) # b devient [0, 1, 4, 9, 16]
c = [k**2 for k in range(5)] # en compréhension (même résultat)
d = [k for k in range(20) if k % 3 == 0] # compréhension avec condition
a.append(11) # ajoute 11 à la fin
a.remove(3) # supprime la première occurrence de 3
a[0] # premier élément (indice 0)
a[-1] # dernier élément
len(a) # nombre d'éléments
for x in a: # sur les éléments
print(x)
for i in range(len(a)): # sur les indices
print(i, a[i])
Se limiter aux listes, sans introduire d'autres types de collections, pour éviter les confusions.
[k for k in range(50) if k % 5 == 0] → [0, 5, 10, 15, 20, 25, 30, 35, 40, 45].
Le module random fournit random(), qui renvoie un flottant entre \(0\) et \(1\). On simule une épreuve de Bernoulli de paramètre \(p\) : c'est un succès si le tirage est inférieur à \(p\).
from random import random
def bernoulli(p):
"""Renvoie 1 (succès) avec probabilité p, sinon 0."""
if random() < p:
return 1
else:
return 0
def compte_succes(n, p):
total = 0
for _ in range(n):
total = total + bernoulli(p) # accumulateur de succès
return total
# fréquence de succès sur un grand nombre de simulations
def frequence(n, p, N):
return sum(compte_succes(n, p) for _ in range(N)) / (N * n)
print(round(frequence(10, 0.3, 100000), 3)) # proche de 0.3
C'est le lien direct avec la loi binomiale \(B(n,p)\) : on répète \(n\) épreuves de Bernoulli indépendantes et on compte les succès.
simule_dizaine(p) qui simule \(10\) épreuves de Bernoulli de paramètre p et renvoie le nombre de succès.
from random import random
def simule_dizaine(p):
succes = 0
for _ in range(10):
if random() < p:
succes += 1
return succes
On sait traiter un fichier de données réelles (par exemple un fichier CSV) pour en extraire de l'information.
def moyenne_colonne(nom_fichier, indice_colonne):
total, n = 0, 0
with open(nom_fichier, "r", encoding="utf-8") as f:
next(f) # on saute la ligne d'en-têtes
for ligne in f:
champs = ligne.strip().split(",")
total += float(champs[indice_colonne])
n += 1
return total / n
Croiser deux critères à partir de données brutes (ex. « sexe » et « option ») : on compte les effectifs de chaque combinaison. Ce travail se fait aisément au tableur (tableau croisé dynamique) ou en Python avec un dictionnaire de comptage.
=NB.SI(plage;critère) compte, =SOMME(plage) accumule.=ALEA() renvoie un nombre entre \(0\) et \(1\) ; =SI(ALEA()<0,3;1;0) simule une Bernoulli de paramètre \(0{,}3\).def somme(liste):
S = 0
for x in liste:
S = x # BUG : écrase au lieu d'accumuler
return S
Correction : S = S + x. L'erreur remplaçait S par le dernier élément au lieu d'accumuler.
def moyenne(liste):
total = 0
for x in liste:
total = total + x
return total / len(liste) - 1
La priorité des opérations fait calculer (total / len(liste)) - 1. Il faut supprimer le - 1 qui n'a pas lieu d'être : return total / len(liste).
❌ Accumulateur non initialisé, ou écrasé au lieu d'être incrémenté.
✅ S = S + x, pas S = x. Initialiser S = 0 (somme) ou P = 1 (produit).
❌ Se tromper dans les bornes de range.
✅ range(1, n+1) parcourt \(1\) à \(n\) ; oublier le +1 perd le dernier terme.
❌ Se tromper d'indice de liste.
✅ Le premier indice est \(0\) ; le dernier est len(liste) - 1. liste[-1] = dernier élément.
❌ Confondre == (test d'égalité) et = (affectation), ou se tromper d'indentation.
✅ L'indentation définit le bloc d'une boucle ou d'un if : un mauvais alignement change la logique. Pour une Bernoulli, succès si random() < p (ne pas inverser).
return) ; structurer en fonctions = programmation modulaire.random() \(\in [0,1[\) simule une Bernoulli : succès si random() < p.