Retour au blog

Découvre Python : Variables, Boucles et Conditions !

Suis les variables à la main, ligne après ligne, pour prévoir ce qu'affiche un programme Python : 14 questions de plus en plus piégeuses.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

L'essentiel à connaître

Pour savoir ce qu'affiche un programme Python, fais comme l'ordinateur : lis une ligne à la fois, de haut en bas, et note au brouillon la valeur de chaque variable après chaque ligne. Une variable est un nom qui désigne une valeur, et a = a * 2 est une affectation : Python calcule d'abord ce qui est à droite du signe =, puis range le résultat dans la variable de gauche. Si a valait 3, cette ligne lui donne la valeur $3 \times 2 = 6$, et l'ancienne valeur est perdue.

Chaque valeur a un type : int pour un entier, float pour un nombre à virgule, écrit avec un point (3.5), str pour un texte entre guillemets, bool pour True (vrai) ou False (faux), ce que donne une comparaison. La documentation officielle de Python le précise : la division / donne toujours un float, et + additionne deux nombres mais colle deux textes bout à bout.

Avec if, elif (« sinon si ») et else (« sinon »), Python teste les conditions dans l'ordre et n'exécute que le bloc de la première condition vraie : les suivantes ne sont même pas testées. Deux if l'un sous l'autre font, eux, deux tests indépendants. Un bloc se repère à son indentation, le décalage vers la droite en début de ligne.

La boucle for i in range(5) fait 5 tours, avec i qui vaut 0, 1, 2, 3 puis 4 : la borne de fin n'est jamais atteinte, et range(3, 8) donne 3, 4, 5, 6 et 7. La boucle while (« tant que ») teste sa condition au début de chaque tour, jamais au milieu : elle s'arrête au premier test faux, même si la variable a dépassé la limite pendant le dernier tour.

Exemple : le tableau de suivi de ce programme, une ligne par tour de boucle.

s = 0
k = 1
while s < 10:
    s = s + k
    k = k + 2
MomentTest s < 10sk
Départaucun01
Tour 1vrai13
Tour 2vrai45
Tour 3vrai97
Tour 4vrai169

Au test suivant, $16 \lt 10$ est faux : la boucle s'arrête avec s égal à 16, bien au-delà de 10.

À retenir : une variable garde sa valeur jusqu'à sa prochaine affectation. Elle ne se recalcule jamais toute seule quand une autre variable change.

Piège classique : une ligne qui n'est pas décalée sous une boucle n'en fait pas partie. Elle ne s'exécute qu'une fois, quand la boucle est finie.

Quiz : teste tes connaissances

Garde ton brouillon à côté : chaque question se règle en suivant les variables, comme dans le tableau ci-dessus. La difficulté monte, et les trois dernières questions sont les plus piégeuses.

Question 1 : Qu'affiche ce programme ?

note = 10
if note >= 10:
    print("admis")
else:
    print("ajourné")
A. ajourné
B. admis
C. admis puis ajourné
D. rien du tout

Réponse : B. Le signe >= se lit « supérieur ou égal », et $10 \geq 10$ est vrai : Python exécute le bloc du if et saute le else. Répondre « ajourné », c'est lire > à la place de >=.

Question 2 : Qu'affiche ce programme ?

a = 4
b = a + 3
a = 10
print(b)
A. 13
B. 10
C. 4
D. 7

Réponse : D. b a été calculée quand a valait 4 : $4 + 3 = 7$. Modifier a ensuite ne change pas b. Le piège, 13, traite b = a + 3 comme une formule de tableur, recalculée à chaque changement.

Question 3 : Qu'affiche l'instruction print(7 / 2) ?

A. 3.5
B. 3
C. 3.0
D. 4

Réponse : A. La division / donne toujours un float : $7 \div 2 = 3{,}5$, que Python affiche avec un point. Le piège, 3, est le quotient de la division entière, qui s'écrit 7 // 2.

Question 4 : Qu'affiche ce programme ?

a = "12"
b = "3"
print(a + b)
A. 15
B. une erreur
C. 123
D. 12 3

Réponse : C. Avec les guillemets, a et b sont des textes, et + les colle bout à bout. Le piège, 15, demanderait des nombres écrits sans guillemets : 12 + 3.

Question 5 : Qu'affiche ce programme ?

a = 5
b = a > 3
print(b)
A. True
B. False
C. 5
D. une erreur

Réponse : A. a > 3 est une comparaison, et $5 \gt 3$ est vrai : b reçoit le booléen True. Le piège, 5, croit que b reçoit la valeur de a, alors qu'elle reçoit le résultat du test.

Question 6 : Qu'affiche ce programme ?

total = 0
for i in range(4):
    total = total + i
print(total)
A. 10
B. 4
C. 3
D. 6

Réponse : D. range(4) donne 0, 1, 2 et 3, donc total vaut $0 + 1 + 2 + 3 = 6$. Le piège, 10, fait aller range(4) de 1 à 4 : $1 + 2 + 3 + 4 = 10$.

Question 7 : Qu'affiche ce programme ?

x = 15
if x > 5:
    print("moyen")
elif x > 10:
    print("grand")
else:
    print("petit")
A. grand
B. moyen
C. moyen puis grand
D. petit

Réponse : B. $15 \gt 5$ est vrai : Python affiche « moyen » et saute la suite, sans même tester le elif. « grand » tente parce que $15 \gt 10$ est vrai aussi, mais seule la première condition vraie compte.

Question 8 : Qu'affiche ce programme ?

s = 0
for i in range(2, 7):
    if i > 3:
        s = s + i
print(s)
A. 20
B. 9
C. 15
D. 22

Réponse : C. range(2, 7) donne 2, 3, 4, 5 et 6, et seuls 4, 5 et 6 passent le test : $4 + 5 + 6 = 15$. Le piège, 9, oublie 6 : c'est 7, la borne de fin, qui est exclue.

Question 9 : Qu'affiche ce programme ?

n = 1
while n < 20:
    n = n * 3
print(n)
A. 9
B. 20
C. 81
D. 27

Réponse : D. n passe de 1 à 3, puis 9, puis 27, et le test $27 \lt 20$, faux, arrête la boucle. Le piège, 9, oublie que le test se fait au début du tour : $9 \lt 20$ est vrai, donc un tour de plus a lieu.

Question 10 : Qu'affiche ce programme ?

compte = 0
k = 10
while k > 0:
    k = k - 3
    compte = compte + 1
print(compte)
A. 4
B. 3
C. 1
D. -2

Réponse : A. k vaut 7, puis 4, puis 1, puis $1 - 3 = -2$ : la boucle fait 4 tours avant que le test $-2 \gt 0$ soit faux. Le piège, 3, s'arrête quand k vaut 1, alors que $1 \gt 0$ est encore vrai.

Question 11 : Ce programme veut échanger les valeurs de a et b. Qu'affiche-t-il ?

a = 2
b = 9
a = b
b = a
print(a, b)
A. 9 2
B. 2 9
C. 9 9
D. 2 2

Réponse : C. Après a = b, a vaut 9 et le 2 est perdu ; b = a range ensuite 9 dans b. Le piège, « 9 2 », croit l'échange réussi : il aurait fallu garder d'abord la valeur de a dans une troisième variable.

Question 12 : Qu'affiche ce programme ?

x = 4
if x < 5:
    x = x + 3
if x > 5:
    x = x * 2
print(x)
A. 7
B. 14
C. 7 puis 14
D. 4

Réponse : B. Deux if séparés sont testés l'un après l'autre. $4 \lt 5$ est vrai, donc x devient 7 ; puis $7 \gt 5$ est vrai à son tour, et x devient $7 \times 2 = 14$. Le piège, 7, traite le second if comme un elif, qui aurait été sauté.

Question 13 : Qu'affiche ce programme ? Chaque print écrit sur une nouvelle ligne.

i = 0
while i < 3:
    i = i + 1
    print(i)
A. 0, 1, 2
B. 1, 2
C. 0, 1, 2, 3
D. 1, 2, 3

Réponse : D. À chaque tour, i augmente avant d'être affiché. Quand i vaut 2, $2 \lt 3$ est vrai : i passe à 3 et s'affiche, puis le test $3 \lt 3$, faux, arrête la boucle. Le piège, « 0, 1, 2 », lit le print comme s'il venait avant l'addition.

Question 14 : Combien de fois ce programme affiche-t-il « tour » ?

n = 0
while n < 3:
    print("tour")
n = n + 1
A. sans fin
B. 3 fois
C. 4 fois
D. une fois

Réponse : A. La ligne n = n + 1 n'est pas décalée : elle est hors de la boucle. Dans la boucle, n reste à 0 et $0 \lt 3$ reste vrai : c'est une boucle infinie. Le piège, « 3 fois », lit l'intention du programmeur au lieu de l'indentation.

Sources

Documentation officielle de Python, tutoriel en français : « Introduction informelle à Python » (affectation, division, textes, boucle while) et « D'autres outils de contrôle de flux » (if, elif, for, range).

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.