Exercices – Variables et opérations
Série 1 — Variables et affectations
Section intitulée « Série 1 — Variables et affectations »1.1 Opérations à la chaîne
Section intitulée « 1.1 Opérations à la chaîne »Qu’affiche le programme suivant lorsqu’on l’exécute ?
nombre_1 = 5nombre_2 = nombre_1 + nombre_1nombre_3 = nombre_2 * nombre_1print(nombre_1, nombre_2, nombre_3)🔑 Voir la solution
Affichage : 5 10 50
Explication :
nombre_1 = 5→nombre_1vaut 5nombre_2 = nombre_1 + nombre_1→5 + 5= 10nombre_3 = nombre_2 * nombre_1→10 * 5= 50print(nombre_1, nombre_2, nombre_3)affiche les trois valeurs séparées par un espace.
1.2 Piège de l’affectation
Section intitulée « 1.2 Piège de l’affectation »Qu’affiche le programme suivant ?
a = 1b = 2a = bb = aprint(a, b)🔑 Voir la solution
Affichage : 2 2
Explication :
a = 1→avaut 1b = 2→bvaut 2a = b→aprend la valeur deb, doncavaut maintenant 2b = a→bprend la valeur dea, qui est 2. La valeur 1 est perdue !
1.3 Priorité des opérations
Section intitulée « 1.3 Priorité des opérations »Qu’affiche chacune des instructions suivantes ?
a) print(1/2 + 1/4)b) print(1 + 2 * 1 + 4)c) print(64 ** 1 / 2)🔑 Voir la solution
a) 0.75
1/2 donne 0.5 et 1/4 donne 0.25. Donc 0.5 + 0.25 = 0.75.
b) 7
Attention à la priorité ! La multiplication se fait avant l’addition :
1 + (2 * 1) + 4 = 1 + 2 + 4 = 7
c) 32.0
1.4 Défi parenthèses
Section intitulée « 1.4 Défi parenthèses »Considérez l’instruction suivante :
print(1 + 2 * 3 + 4 * 5)Sans parenthèses, le résultat est 1 + 6 + 20 = 27.
En ajoutant uniquement des parenthèses, montrez comment obtenir chacun des affichages suivants :
| Résultat attendu | |
|---|---|
| a) | 29 |
| b) | 47 |
| c) | 51 |
| d) | 55 |
| e) | 71 |
| f) | 105 |
🔑 Voir la solution
a) 29 → (1 + 2) * 3 + 4 * 5
3 * 3 + 4 * 5=9 + 20= 29
b) 47 → 1 + 2 * (3 + 4) * 5
- Attention, il y a aussi :
1 + 2 * 3 + (4 * 5)ne donne que 27. Essayons : 1 + 2 * (3 + 4) * 5=1 + 2 * 7 * 5=1 + 70= 71 ❌(1 + 2) * (3 + 4) * 5=3 * 7 * 5= 105 ❌1 + (2 * 3 + 4) * 5=1 + (6 + 4) * 5=1 + 10 * 5=1 + 50= 51 ❌- Essayons :
(1 + 2 * 3 + 4) * 5=(1 + 6 + 4) * 5=11 * 5= 55 ❌ 1 + 2 * (3 + 4 * 5)=1 + 2 * (3 + 20)=1 + 2 * 23=1 + 46= 47 ✅
b) 47 → 1 + 2 * (3 + 4 * 5)
c) 51 → 1 + (2 * 3 + 4) * 5
1 + (6 + 4) * 5=1 + 10 * 5=1 + 50= 51 ✅
d) 55 → (1 + 2 * 3 + 4) * 5
(1 + 6 + 4) * 5=11 * 5= 55 ✅
e) 71 → 1 + 2 * (3 + 4) * 5
1 + 2 * 7 * 5=1 + 70= 71 ✅
f) 105 → (1 + 2) * (3 + 4) * 5
3 * 7 * 5= 105 ✅
1.5 Correction d’erreurs
Section intitulée « 1.5 Correction d’erreurs »Chacune des lignes du programme suivant contient une erreur. Corrigez-les :
x = 3a/bprint x🔑 Voir la solution
Ligne 1 : x = 3a/b
3an’est pas valide en Python. Il faut écrire explicitement la multiplication :3 * a / b.- De plus,
aetbdoivent être définis avant d’être utilisés.
Ligne 2 : print x
- En Python 3,
printest une fonction et nécessite des parenthèses :print(x).
Code corrigé :
a = 6b = 2x = 3 * a / bprint(x)Série 2 — Approfondissement
Section intitulée « Série 2 — Approfondissement »2.1 Division entière et modulo
Section intitulée « 2.1 Division entière et modulo »Qu’affiche chacune des instructions suivantes ?
a) print(17 // 5)b) print(17 % 5)c) print(17 // 5, 17 % 5)d) print(2 ** 3 ** 2)🔑 Voir la solution
a) 3 — La division entière (//) donne le quotient sans la partie décimale.
b) 2 — Le modulo (%) donne le reste de la division. 17 = 5 × 3 + 2.
c) 3 2 — Les deux résultats combinés : quotient et reste.
d) 512
2.2 Traçage de variables
Section intitulée « 2.2 Traçage de variables »Qu’affiche le programme suivant ? Complétez le tableau de traçage.
x = 2x = x + 3x = x * xx = x - 10print(x)🔑 Voir la solution
Affichage : 15
| Instruction | Valeur de x |
|---|---|
x = 2 | 2 |
x = x + 3 | 5 |
x = x * x | 25 |
x = x - 10 | 15 |
2.3 Opérateurs d’affectation composés
Section intitulée « 2.3 Opérateurs d’affectation composés »Qu’affiche le programme suivant ?
n = 10n += 5n *= 2n //= 3n %= 4print(n)🔑 Voir la solution
Affichage : 2
| Instruction | Équivalent | Valeur de n |
|---|---|---|
n = 10 | — | 10 |
n += 5 | n = n + 5 | 15 |
n *= 2 | n = n * 2 | 30 |
n //= 3 | n = n // 3 | 10 |
n %= 4 | n = n % 4 | 2 |
2.4 Échange de trois variables
Section intitulée « 2.4 Échange de trois variables »Qu’affiche le programme suivant ?
a = 1b = 2c = 3temp = aa = bb = cc = tempprint(a, b, c)🔑 Voir la solution
Affichage : 2 3 1
Les valeurs effectuent une rotation : chaque variable prend la valeur de la suivante.
| Instruction | a | b | c | temp |
|---|---|---|---|---|
| Initialisation | 1 | 2 | 3 | — |
temp = a | 1 | 2 | 3 | 1 |
a = b | 2 | 2 | 3 | 1 |
b = c | 2 | 3 | 3 | 1 |
c = temp | 2 | 3 | 1 | 1 |
2.5 Types de données
Section intitulée « 2.5 Types de données »Qu’affiche chacune des instructions suivantes ?
a) print(type(3))b) print(type(3.0))c) print(type("3"))d) print(3 + 3.0)e) print("3" + "3")f) print("3" * 3)g) print(int("4") + 1)🔑 Voir la solution
a) <class 'int'> — 3 est un entier.
b) <class 'float'> — 3.0 est un nombre à virgule flottante.
c) <class 'str'> — “3” entre guillemets est une chaîne de caractères.
d) 6.0 — Python convertit automatiquement 3 (int) en 3.0 (float) avant l’addition.
e) 33 — L’opérateur + entre deux chaînes fait la concaténation (pas l’addition).
f) 333 — L’opérateur * répète la chaîne 3 fois.
g) 5 — int("4") convertit la chaîne "4" en entier 4, puis 4 + 1 = 5.
2.6 Formules scientifiques
Section intitulée « 2.6 Formules scientifiques »Le programme suivant calcule l’aire et le périmètre d’un cercle. Qu’affiche-t-il ?
rayon = 5pi = 3.14159aire = pi * rayon ** 2perimetre = 2 * pi * rayonprint("Aire :", aire)print("Périmètre :", perimetre)🔑 Voir la solution
Affichage :
Aire : 78.53975Périmètre : 31.4159Explication :
rayon ** 2est calculé en premier (priorité de**), donc5 ** 2=25.aire = 3.14159 * 25= 78.53975perimetre = 2 * 3.14159 * 5= 31.4159
2.7 Débogage complet
Section intitulée « 2.7 Débogage complet »Le programme suivant contient une erreur par ligne. Identifiez et corrigez chaque erreur.
Print("Bonjour')x = = 5y = x +* 2print(x, y🔑 Voir la solution
| Ligne | Erreur | Correction |
|---|---|---|
Print("Bonjour') | Print avec majuscule + guillemets non appariés (" et ') | print("Bonjour") |
x = = 5 | Espace entre les = crée un opérateur de comparaison == | x = 5 |
y = x +* 2 | +* n’est pas un opérateur valide | y = x + 2 ou y = x * 2 |
print(x, y | Parenthèse fermante manquante | print(x, y) |
Code corrigé :
print("Bonjour")x = 5y = x + 2print(x, y)2.8 Énergie cinétique
Section intitulée « 2.8 Énergie cinétique »L’énergie cinétique est donnée par la formule .
Qu’affiche le programme suivant ?
masse = 4.0vitesse = 3.0energie = 1/2 * masse * vitesse ** 2print("Énergie cinétique :", energie, "J")🔑 Voir la solution
Affichage : Énergie cinétique : 18.0 J
Explication :
vitesse ** 2=3.0 ** 2=9.0(priorité de**)1/2=0.5(division flottante)0.5 * 4.0=2.02.0 * 9.0=18.0
2.9 Conversion de température
Section intitulée « 2.9 Conversion de température »Analysez le programme suivant et déterminez ce qu’il affiche :
celsius = 100fahrenheit = celsius * 9 / 5 + 32kelvin = celsius + 273.15print(fahrenheit)print(kelvin)Ensuite, réécrivez la formule de fahrenheit en utilisant des parenthèses pour vous assurer que le calcul est correct même si la priorité des opérations changeait.
🔑 Voir la solution
Affichage :
212.0373.15Explication : La priorité des opérations fait que celsius * 9 / 5 est calculé avant + 32, ce qui donne le bon résultat. Cependant, pour plus de clarté :
fahrenheit = (celsius * 9 / 5) + 32# ou encore plus explicite :fahrenheit = celsius * (9 / 5) + 322.10 Défi — Que vaut x ?
Section intitulée « 2.10 Défi — Que vaut x ? »Sans exécuter le programme, déterminez la valeur finale de x :
x = 1y = 2x = x + yy = x + yx = x + yprint(x)🔑 Voir la solution
Affichage : 8
| Instruction | x | y |
|---|---|---|
x = 1 | 1 | — |
y = 2 | 1 | 2 |
x = x + y | 3 | 2 |
y = x + y | 3 | 5 |
x = x + y | 8 | 5 |