Chapitre 15 — Python — Apprendre à programmer

Exercices courts, interactifs et corrigeables pour travailler les gestes essentiels du chapitre.

Exercice 1 — Lire une boucle

Variante 1/2

Que vaut la variable \(s\) après ce pseudo-code : \(s=0\), pour \(k\) de 1 à 5, \(s=s+k\) ?

Correction type
Niveau attendu : Acquis

On initialise \(s=0\). La boucle ajoute successivement les valeurs de \(k\) de 1 à 5.

s = 0
pour k de 1 à 5 :
    s = s + k

On 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

Variante 1/2

Écrire une fonction qui calcule \(u_n\) pour \(u_0=2\) et \(u_{n+1}=3u_n-1\).

Correction type
Niveau attendu : En cours d’acquisition

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 u

La variable u contient toujours le terme courant. Après la boucle, elle contient \(u_n\).

Exercice 3 — Condition

Variante 1/2

Écrire une condition Python qui teste si un nombre \(x\) est strictement positif.

Correction type
Niveau attendu : Acquis

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

Variante 1/2

Proposer un algorithme qui simule 100 lancers d’une pièce et compte le nombre de piles.

Correction type
Niveau attendu : En cours d’acquisition

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

Variante 1/2
a = 3
b = 5
a = a + b
b = a - b

Donner les valeurs finales de a et b.

Correction type
Niveau attendu : Acquis

On exécute les lignes dans l’ordre.

a = 3
b = 5
a = a + b   # a vaut 8
b = a - b   # b vaut 3

Les valeurs finales sont donc \(a=8\) et \(b=3\).

Exercice 6 — Boucle tant que et seuil

Variante 1/2

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
Niveau attendu : En cours d’acquisition

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

Variante 1/2

Écrire une fonction Python qui renvoie \(f(x)=3x-5\), puis calculer \(f(4)\).

Correction type
Niveau attendu : Acquis

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

Variante 1/2

Écrire un programme qui calcule la somme des nombres de la liste [4, 7, 1, 8].

Correction type
Niveau attendu : En cours d’acquisition

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

Variante 1/2

Dans la liste [3, -1, 0, 5, -2, 7], écrire un programme qui compte les nombres strictement positifs.

Correction type
Niveau attendu : En cours d’acquisition

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

Variante 1/2

Écrire un programme qui cherche le plus petit entier \(n\) tel que \(n^2\geq50\).

Correction type
Niveau attendu : Acquis

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.