
23 exercices classés par difficulté (★ facile, ★★ moyen, ★★★ difficile). Cherche d’abord sans regarder le corrigé !
1 Que fait ce programme ? ★★★
Qu’affiche le programme suivant ? Justifie chaque valeur.
a = 12 b = 5 print(a // b, a % b, a / b, a ** 2 - b)
2 Vrai ou faux ? ★★★
Dis si chaque affirmation est vraie ou fausse, en justifiant.
- range(4) contient le nombre 4.
- Dans if x = 3:, on teste si x vaut 3.
- Une fonction qui exécute return continue ensuite à lire les lignes suivantes.
- Si L = [6, 1, 8], alors L[3] vaut 8.
- La condition 0.1 + 0.2 == 0.3 est vraie en Python.
3 Écrire une fonction ★★★
Écris en Python une fonction f qui calcule f(x) = 3x² − 5x + 2. Calcule à la main f(4) et f(−1), puis donne ce que doit afficher print(f(4), f(-1)).
4 Parité ★★★
Écris une fonction est_pair(n) qui renvoie True si l’entier n est pair et False sinon. Que renvoie-t-elle pour 14 et pour 7 ?
5 Tableau de suivi ★★★
Complète un tableau de suivi des variables k et s pour le programme suivant, puis donne la valeur affichée.
s = 0
for k in range(1, 6):
s = s + k * k
print(s)
6 Manipuler une liste ★★★
Qu’affiche chacune des instructions print du programme suivant ?
L = [8, 3, 12, 5] print(L[2], L[-1], len(L)) L.append(20) L[1] = 0 print(L) print(len(L))
7 Tarif de cinéma ★★★
Un cinéma applique le tarif suivant : 5 € pour les moins de 12 ans, 7 € de 12 à 25 ans inclus, 9 € au-delà. Écris la fonction tarif(age) qui renvoie le prix, puis donne les prix pour 10 ans, 12 ans et 30 ans.
8 Suivi d’une boucle while ★★★
Fais le suivi de x et n pour ce programme, puis donne l’affichage final et explique ce que représente n.
x = 100
n = 0
while x > 10:
x = x / 2
n = n + 1
print(x, n)
9 Moyenne d’une liste ★★★
Écris une fonction moyenne(L) qui renvoie la moyenne des éléments d’une liste de nombres. Teste-la sur les notes [12, 15, 9, 18] et vérifie à la main.
10 Indice du maximum ★★★
Écris une fonction indice_max(L) qui renvoie l’indice (et non la valeur) du plus grand élément d’une liste. Si le maximum apparaît plusieurs fois, elle renvoie le premier indice. Teste sur [4, 17, 9, 17, 2].
11 Compter les notes ★★★
Écris une fonction compte_reussites(notes) qui renvoie le nombre de notes supérieures ou égales à 10. Que renvoie-t-elle pour [8, 12, 10, 15, 6, 9, 11] ?
12 Une suite récurrente ★★★
On définit la suite (un) par u0 = 1 et un+1 = 2un + 3.
- Calcule à la main u1, u2, u3.
- Écris une fonction terme(n) qui renvoie un.
- On admet que un = 4×2n − 3. Vérifie cette formule pour n = 5.
13 Placement à 2 % ★★★
On place 2500 € à 2 % d’intérêts par an (le capital est multiplié par 1,02 chaque année). Écris un programme qui détermine au bout de combien d’années le capital dépasse 3000 €. Vérifie le résultat avec un calcul.
14 Un village qui se dépeuple ★★★
Un village compte 12000 habitants. Sa population baisse de 5 % chaque année. Écris un programme qui donne le nombre d’années au bout duquel il passe sous 8000 habitants, puis vérifie le résultat avec un calcul.
15 Fréquence du 6 ★★★
Écris une fonction frequence_six(N) qui simule N lancers d’un dé équilibré et renvoie la fréquence d’apparition du 6. Compare le résultat à la probabilité théorique.
16 Dichotomie à la main ★★★
Soit f(x) = x² − 5. On cherche une valeur approchée de √5.
- Vérifie que f(2) < 0 et f(3) > 0.
- Applique trois étapes de dichotomie à partir de [2 ; 3], en donnant à chaque fois le milieu, le signe de f(milieu) et le nouvel intervalle.
- Quelle est l’amplitude de l’intervalle obtenu ? Donne un encadrement de √5.
17 Compléter un programme ★★★
On veut résoudre x³ + x − 1 = 0 sur [0 ; 1] avec une précision de 0,001.
- Montre que h(x) = x³ + x − 1 change de signe sur [0 ; 1].
- Complète les pointillés pour que la fonction renvoie l’intervalle final et le nombre d’étapes :
def dichotomie(f, a, b, e):
n = 0
while ........ :
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = ........
else:
a = ........
n = n + 1
return a, b, n
- Exécute-la et interprète le résultat.
18 Combien d’étapes ? ★★★
On applique la dichotomie à une fonction sur un intervalle d’amplitude 1.
- Quelle est l’amplitude après n étapes ?
- Combien d’étapes faut-il pour obtenir une précision de 10−6 ?
- Et si l’intervalle de départ a une amplitude de 8 ?
19 Tri par sélection à la main ★★★
Applique le tri par sélection à la liste [7, 3, 9, 1, 5] : donne la liste obtenue après chaque tour de la boucle extérieure.
20 Coût du tri par sélection ★★★
Le programme ci-dessous compte les comparaisons faites par le tri par sélection.
def comparaisons_selection(L):
L = L[:]
n = len(L)
compte = 0
for i in range(n - 1):
imin = i
for j in range(i + 1, n):
compte = compte + 1
if L[j] < L[imin]:
imin = j
L[i], L[imin] = L[imin], L[i]
return compte
print(comparaisons_selection([7, 3, 9, 1, 5]))
print(comparaisons_selection(list(range(10, 0, -1))))
print(comparaisons_selection(list(range(100))))
- Qu’affiche-t-il ?
- Montre que pour une liste de n éléments, le nombre de comparaisons vaut n(n − 1)/2, quel que soit l’ordre initial.
21 Suite de Syracuse ★★★
Partant d’un entier n > 0, on applique : si n est pair on le divise par 2, sinon on le remplace par 3n + 1. On répète jusqu’à obtenir 1 (on conjecture que cela arrive toujours). Le « temps de vol » est le nombre d’étapes.
- Écris la suite obtenue à partir de 7 et compte les étapes.
- Écris une fonction vol(n) qui renvoie le temps de vol et utilise-la pour trouver le plus long temps de vol pour n entre 1 et 30.
22 Estimer π par simulation ★★★
On choisit au hasard un point (x ; y) dans le carré [0 ; 1] × [0 ; 1]. La probabilité qu’il soit dans le quart de disque de rayon 1 (c’est-à-dire x² + y² ≤ 1) est égale à l’aire de ce quart de disque.
- Calcule cette aire en fonction de π.
- Écris une fonction estime_pi(N) qui simule N points et renvoie une estimation de π.
- Pourquoi le résultat n’est-il pas toujours le même ?
23 Deuxième plus grand ★★★
Sans trier la liste, écris une fonction deuxieme_max(L) qui renvoie le deuxième plus grand élément d’une liste d’au moins deux éléments (avec un seul parcours). Teste-la sur [4, 17, 9, 12, 2] et sur [17, 4, 9, 12, 2].

