V VIDYALAYA · Soutien scolaire
Mathématiques2ndeAlgorithmique et programmationExercices + corrigé

Python : variables, boucles, fonctions — Exercices

Tracer, compléter, écrire. Du plus direct au plus construit. Corrigé en fin de fiche.
⏱ ~30 min✎ Éditeur Python recommandé (Thonny, Pyzo)
1Tracer des variables/ 4 pts
Donner la valeur de chaque variable après l'exécution complète du programme suivant. Raisonner ligne par ligne sans utiliser Python.
a = 10
b = 3
a = a + b
b = a - b
c = a * b
  1. Quelle est la valeur de $a$ à la fin du programme ?
  2. Quelle est la valeur de $b$ à la fin du programme ?
  3. Quelle est la valeur de $c$ ?
2Lire une boucle for/ 4 pts
On exécute le programme suivant.
s = 0
for i in range(1, 6):
    s = s + i
print(s)
  1. Quelles sont les valeurs successives prises par $i$ ?
  2. Dresser un tableau donnant la valeur de $s$ après chaque tour de boucle.
  3. Quelle valeur la fonction print affiche-t-elle ?
3Compléter une boucle while/ 3 pts
On veut calculer la plus petite puissance de $2$ strictement supérieure à $100$. Compléter les pointillés, puis donner la valeur affichée.
n = 1
while ......... :
    n = n * 2
print(n)
  1. Quelle condition faut-il écrire à la place des pointillés ?
  2. Quelle valeur est affichée ? Justifier que c'est bien une puissance de $2$ strictement supérieure à $100$.
4Écrire des fonctions/ 5 pts
Écrire en Python chacune des fonctions suivantes en respectant la syntaxe (def, return, indentation).
  1. Une fonction carre(x) qui renvoie $x^2$. Vérifier : carre(7) doit renvoyer $49$.
  2. Une fonction est_pair(n) qui renvoie True si $n$ est pair, False sinon. L'opérateur modulo s'écrit %.
  3. Une fonction valeur_absolue(x) qui renvoie $|x|$ sans utiliser abs(). Utiliser un if/else.
5Problème — somme des entiers/ 4 pts
Écrire une fonction somme(n) qui renvoie $1 + 2 + \ldots + n$ à l'aide d'une boucle for, puis vérifier avec la formule $\dfrac{n(n+1)}{2}$.
  1. Écrire la fonction somme(n).
  2. Calculer somme(10) en traçant la boucle (tableau de valeurs de $s$). Comparer à $\dfrac{10 \times 11}{2}$.
  3. (Bonus) Modifier la fonction pour utiliser range(0, n+1) à la place de range(1, n+1) et vérifier que le résultat ne change pas.
Corrigé détaillé
1Tracer des variables
a = a + b \(a \leftarrow 10 + 3 =\) \(13\)
b = a - b \(b \leftarrow 13 - 3 =\) \(10\)
c = a * b \(c \leftarrow 13 \times 10 =\) \(130\)
2Lire une boucle for
Valeurs de i \(\text{range}(1,6) \Rightarrow\) \(1,\ 2,\ 3,\ 4,\ 5\)
Évolution de s \(0 \xrightarrow{+1} 1 \xrightarrow{+2} 3 \xrightarrow{+3} 6 \xrightarrow{+4} 10 \xrightarrow{+5}\) \(15\)
print(s) \(s = 1 + 2 + 3 + 4 + 5 =\) \(15\)
3Compléter une boucle while
Condition \(\text{Continuer tant que } n \le 100 \text{ :}\) \(\texttt{while n <= 100 :}\)
Itérations de n \(1 \to 2 \to 4 \to 8 \to 16 \to 32 \to 64 \to 128\) \(128 = 2^7 \gt 100 \checkmark\)
4Écrire des fonctions
carre(x) \(\texttt{def carre(x) :}\quad \texttt{return x**2}\) \(\texttt{carre(7)} \Rightarrow 7^2 = 49 \checkmark\)
est_pair(n) \(\texttt{def est\_pair(n) :}\quad \texttt{return n \% 2 == 0}\) \(\texttt{est\_pair(6)} \Rightarrow \texttt{True} \checkmark\)
valeur_absolue(x) \(\texttt{def valeur\_absolue(x) :}\quad \texttt{if x >= 0 : return x}\quad \texttt{else : return -x}\) \(\texttt{valeur\_absolue(-5)} \Rightarrow 5 \checkmark\)
5Problème — somme des entiers
Fonction somme(n) \(\texttt{def somme(n) :}\quad \texttt{s = 0}\quad \texttt{for i in range(1, n+1) : s = s + i}\quad \texttt{return s}\) \(\)
somme(10) \(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 =\) \(55\)
Formule \(\dfrac{10 \times 11}{2} =\) \(55 \checkmark\)
(Bonus) range(0, n+1) \(\text{On ajoute } 0 \text{ en tête : } 0 + 1 + 2 + \ldots + n = 1 + 2 + \ldots + n\) \(\text{Le résultat ne change pas.} \checkmark\)