Chapitre 15 — Python — Apprendre à programmer
Exercices courts, interactifs et corrigeables pour travailler les gestes essentiels du chapitre.
Exercice 1 — Lire une boucle
Que vaut la variable \(s\) après ce pseudo-code : \(s=0\), pour \(k\) de 1 à 5, \(s=s+k\) ?
Correction type
On initialise \(s=0\). La boucle ajoute successivement les valeurs de \(k\) de 1 à 5.
s = 0
pour k de 1 à 5 :
s = s + kOn obtient donc \(s=1+2+3+4+5=15\). La valeur finale de \(s\) est 15.
Pour la variante, on ajoute \(2k\) à chaque tour : \(2(1+2+3+4+5)=30\).
Exercice 2 — Suite en Python
Écrire une fonction qui calcule \(u_n\) pour \(u_0=2\) et \(u_{n+1}=3u_n-1\).
Correction type
On part de \(u_0=2\), puis on applique la relation \(u_{n+1}=3u_n-1\) exactement \(n\) fois.
def suite(n):
u = 2
for k in range(n):
u = 3*u - 1
return uLa variable u contient toujours le terme courant. Après la boucle, elle contient \(u_n\).
Exercice 3 — Condition
Écrire une condition Python qui teste si un nombre \(x\) est strictement positif.
Correction type
Tester si \(x\) est strictement positif revient à vérifier si \(x>0\).
if x > 0:
print("positif")
else:
print("non positif")Pour la variante, \(x\in[0;1]\) se traduit en Python par une double inégalité.
if 0 <= x <= 1:
print("dans l intervalle")
Exercice 4 — Simulation
Proposer un algorithme qui simule 100 lancers d’une pièce et compte le nombre de piles.
Correction type
On répète 100 fois une expérience aléatoire, puis on compte les résultats égaux à pile.
from random import randint
compteur = 0
for k in range(100):
lancer = randint(0, 1)
if lancer == 1:
compteur = compteur + 1
print(compteur)Le compteur augmente uniquement lorsque le lancer correspond à pile. Pour la variante, il suffit de remplacer 100 par 1000.
Exercice 5 — Affectations successives
a = 3
b = 5
a = a + b
b = a - bDonner les valeurs finales de a et b.
Correction type
On exécute les lignes dans l’ordre.
a = 3
b = 5
a = a + b # a vaut 8
b = a - b # b vaut 3Les valeurs finales sont donc \(a=8\) et \(b=3\).
Exercice 6 — Boucle tant que et seuil
On considère \(u_0=10\) et \(u_{n+1}=1,2u_n\). Écrire un programme qui renvoie le premier rang \(n\) tel que \(u_n\geq100\).
Correction type
On augmente \(u\) tant que le seuil n’est pas atteint, en comptant le nombre d’étapes.
u = 10
n = 0
while u < 100:
u = 1.2*u
n = n + 1
print(n)La variable n contient le premier rang pour lequel \(u_n\geq100\).
Exercice 7 — Fonction affine
Écrire une fonction Python qui renvoie \(f(x)=3x-5\), puis calculer \(f(4)\).
Correction type
Une fonction Python renvoie le résultat avec return.
def f(x):
return 3*x - 5
print(f(4))On obtient \(f(4)=3\times4-5=7\).
Exercice 8 — Parcourir une liste
Écrire un programme qui calcule la somme des nombres de la liste [4, 7, 1, 8].
Correction type
On initialise une somme, puis on ajoute chaque élément de la liste.
valeurs = [4, 7, 1, 8]
somme = 0
for x in valeurs:
somme = somme + x
print(somme)La somme vaut \(4+7+1+8=20\).
Exercice 9 — Compter avec une condition
Dans la liste [3, -1, 0, 5, -2, 7], écrire un programme qui compte les nombres strictement positifs.
Correction type
On parcourt la liste et on augmente le compteur seulement si la condition est vraie.
valeurs = [3, -1, 0, 5, -2, 7]
compteur = 0
for x in valeurs:
if x > 0:
compteur = compteur + 1
print(compteur)Les nombres strictement positifs sont \(3\), \(5\) et \(7\), donc le compteur vaut 3.
Exercice 10 — Approximation par balayage
Écrire un programme qui cherche le plus petit entier \(n\) tel que \(n^2\geq50\).
Correction type
On augmente \(n\) jusqu’à ce que la condition \(n^2\geq50\) soit vérifiée.
n = 0
while n*n < 50:
n = n + 1
print(n)Comme \(7^2=49\) et \(8^2=64\), le plus petit entier cherché est 8.