Ressources · 2ⁿᵈᵉ · Mathématiques
Algorithmique et programmation
Variables et types, affectation, instruction conditionnelle, boucles bornées (for) et non bornées (while), fonctions Python, fonction aléatoire et simulation.
À propos de cette page
Les 36 questions du QCM en version texte
Pour réviser sans écran ou imprimer : chaque question avec ses propositions ; la bonne réponse et son explication se déplient.
Niveau facile ★ — 12 questions
En Python, l’instruction x = 7 :
- A. teste si la variable x est égale à 7
- B. range la valeur 7 dans la variable x
- C. affiche la valeur 7 à l’écran
- D. crée une fonction qui s’appelle x
Réponse
B. range la valeur 7 dans la variable x — Le signe = est celui de l’affectation : il range la valeur de droite dans la variable de gauche. Le test d’égalité s’écrit ==.
range(3, 9) parcourt les entiers :
- A. 3, 4, 5, 6, 7, 8, 9
- B. 4, 5, 6, 7, 8, 9
- C. 3, 6, 9
- D. 3, 4, 5, 6, 7, 8
Réponse
D. 3, 4, 5, 6, 7, 8 — La première borne est incluse, la seconde exclue : range(3, 9) s’arrête à 8 et fait 9 − 3 = 6 tours.
Le reste de la division euclidienne s’obtient avec l’opérateur :
- A. %
- B. //
- C. /
- D. **
Réponse
A. % — % donne le reste, // le quotient entier, / la division décimale et ** la puissance. Ainsi 17 % 5 vaut 2.
Le mot-clé qui commence la définition d’une fonction est :
- A. for
- B. return
- C. def
- D. print
Réponse
C. def — On écrit def, le nom, les paramètres entre parenthèses et deux-points. return s’écrit à l’intérieur, pour renvoyer la valeur.
Les valeurs possibles de randint(1, 6) sont :
- A. les entiers de 1 à 5
- B. les flottants entre 1 et 6
- C. les flottants de [0 ; 1[
- D. les entiers de 1 à 6
Réponse
D. les entiers de 1 à 6 — Avec randint, les deux bornes sont comprises : le résultat est un entier de 1 à 6. C’est random() qui renvoie un flottant de [0 ; 1[.
Après b = 4 puis b = 3 * b, la variable b vaut :
- A. 4
- B. 12
- C. 7
- D. 34
Réponse
B. 12 — Le membre de droite est calculé avec l’ancienne valeur : 3 × 4 = 12, qui remplace 4. Ce n’est pas une égalité à résoudre, et * multiplie les nombres.
Dans for k in range(5):, le nombre de tours de boucle est :
- A. 4
- B. 6
- C. 5
- D. 0
Réponse
C. 5 — range(5) parcourt 0, 1, 2, 3 et 4 : cela fait 5 valeurs, donc 5 tours, même si 5 n’est jamais atteint.
L’instruction print sert à :
- A. afficher une valeur à l’écran
- B. renvoyer une valeur réutilisable
- C. ranger une valeur en mémoire
- D. arrêter la boucle en cours
Réponse
A. afficher une valeur à l’écran — print affiche, sans rien renvoyer. Pour qu’une fonction fournisse une valeur utilisable dans un calcul, on écrit return.
Une chaîne de caractères comme « bonjour » a pour type :
- A. int
- B. str
- C. float
- D. bool
Réponse
B. str — str désigne les chaînes de caractères ; int les entiers, float les flottants et bool les booléens True et False.
Une boucle while s’arrête lorsque :
- A. sa condition devient vraie
- B. elle a fait dix tours
- C. elle rencontre un print
- D. sa condition devient fausse
Réponse
D. sa condition devient fausse — while répète son bloc tant que la condition est vraie : elle s’arrête dès que la condition est fausse.
En langage naturel, l’affectation « a reçoit 3 » se note :
- A. a == 3
- B. a ≥ 3
- C. a ← 3
- D. a + 3
Réponse
C. a ← 3 — La flèche ← note l’affectation en langage naturel ; en Python, on écrit a = 3. Le double égal == est un test.
L’appel random() renvoie :
- A. un flottant de [0 ; 1[
- B. un entier égal à 0 ou à 1
- C. un entier de 1 à 6
- D. un flottant de [0 ; 1]
Réponse
A. un flottant de [0 ; 1[ — random() renvoie un nombre à virgule au hasard, supérieur ou égal à 0 et strictement inférieur à 1 : la borne 1 est exclue.
Niveau moyen ★★ — 12 questions
Que vaut s à la fin ?
s = 0 for k in range(1, 5): s = s + 2 * k- A. 12
- B. 16
- C. 20
- D. 10
Réponse
C. 20 — k prend les valeurs 1, 2, 3 et 4 : on ajoute 2, 4, 6 puis 8, et la somme vaut 20.
Que vaut t à la fin ?
t = 100 while t > 30: t = t - 25- A. 25
- B. 30
- C. 5
- D. 0
Réponse
A. 25 — t prend les valeurs 100, 75, 50 puis 25. Comme 25 > 30 est faux, la boucle s’arrête : t vaut 25.
Avec la fonction ci-dessous, h(5) + h(0) vaut :
def h(x): return 3 * x - 4- A. 11
- B. 15
- C. −4
- D. 7
Réponse
D. 7 — h(5) = 3 × 5 − 4 = 11 et h(0) = −4 : la somme vaut 11 + (−4) = 7.
Combien de nombres ce script affiche-t-il ?
for i in range(1, 4): for j in range(1, 3): print(i * j)- A. 5
- B. 6
- C. 9
- D. 3
Réponse
B. 6 — La boucle extérieure fait 3 tours et, pour chacun, la boucle intérieure en fait 2 : 3 × 2 = 6 affichages.
Que vaut p à la fin ?
p = 1 for k in range(1, 5): p = p * k- A. 10
- B. 24
- C. 120
- D. 0
Réponse
B. 24 — On multiplie par 1, 2, 3 puis 4 : p vaut 24. Un produit s’initialise à 1 ; avec p = 0 au départ, il resterait nul.
9 // 2 et 9 % 2 valent respectivement :
- A. 4,5 et 1
- B. 4 et 5
- C. 1 et 4
- D. 4 et 1
Réponse
D. 4 et 1 — 9 = 2 × 4 + 1 : le quotient entier est 4 et le reste est 1. C’est 9 / 2 qui vaudrait 4,5.
Pour répéter un calcul jusqu’à ce que la population p dépasse 5 000, on écrit :
- A.
while p <= 5000: - B.
while p > 5000: - C.
while p == 5000: - D.
while p < 5000:
Réponse
A.
while p <= 5000:— On continue tant que le seuil n’est pas dépassé, c’est-à-dire tant que p ≤ 5 000 : la condition du while est le contraire de la condition d’arrêt p > 5 000.- A.
Avec la fonction ci-dessous, l’appel f(3, 10) renvoie :
def f(a, b): return a - 2 * b- A. 4
- B. −14
- C. −17
- D. 26
Réponse
C. −17 — Les arguments sont pris dans l’ordre : a = 3 et b = 10, donc 3 − 2 × 10 = −17. f(10, 3) vaudrait 4.
Quelle condition traduit « n est un multiple de 3 compris entre 10 et 50 » ?
- A.
n % 3 == 0 and 10 <= n <= 50 - B.
n % 3 == 0 or 10 <= n <= 50 - C.
n // 3 == 0 and 10 <= n <= 50 - D.
n % 3 = 0 and 10 <= n <= 50
Réponse
A.
n % 3 == 0 and 10 <= n <= 50— Les deux conditions doivent être vraies en même temps : and. Le reste se teste avec % et l’égalité avec == ; un seul signe = provoquerait une erreur.- A.
On exécute le script suivant et l’on tape 41 au clavier. Il affiche :
n = int(input()) print(n + 1)
- A. 411
- B. 41
- C. une erreur
- D. 42
Réponse
D. 42 — int convertit la chaîne tapée en l’entier 41, et 41 + 1 = 42. Sans int, n + 1 provoquerait une erreur.
Combien de fois le bloc de for k in range(2, 20, 3): est-il exécuté ?
- A. 7
- B. 6
- C. 18
- D. 5
Réponse
B. 6 — k vaut 2, 5, 8, 11, 14 et 17 ; la valeur suivante, 20, est la borne exclue : 6 tours.
Un compteur c compte les succès lors de n répétitions d’une expérience simulée. La fréquence observée des succès vaut :
- A. n / c
- B. c * n
- C. c / n
- D. n - c
Réponse
C. c / n — La fréquence est le nombre de succès divisé par le nombre de répétitions : c / n, un nombre entre 0 et 1.
Niveau difficile ★★★ — 12 questions
Laquelle de ces boucles ne s’arrête jamais ?
- A. n vaut 2, puis
while n < 50: n = n * 3 - B. n vaut 30, puis
while n != 0: n = n - 5 - C. n vaut 1, puis
while n != 32: n = n * 2 - D. n vaut 1, puis
while n != 20: n = n + 6
Réponse
D. n vaut 1, puis
while n != 20: n = n + 6— Avec n = n + 6, n prend les valeurs 1, 7, 13, 19, 25… : il saute par-dessus 20, la condition n != 20 reste vraie. Les trois autres boucles atteignent leur condition d’arrêt.- A. n vaut 2, puis
Pourquoi 0.1 + 0.2 == 0.3 vaut-il False en Python ?
- A. == ne fonctionne pas sur les flottants
- B. les flottants sont codés de façon approchée
- C. Python arrondit tout à l’unité
- D. il faudrait écrire un seul signe =
Réponse
B. les flottants sont codés de façon approchée — La machine code les flottants avec un nombre fini de chiffres binaires : la somme diffère de 0,3 d’une quantité infime. On compare donc des flottants avec une inégalité.
Pourquoi ce script provoque-t-il une erreur ?
def f(x): print(2 * x) y = f(4) + 1- A. print est interdit dans une fonction
- B. x n’a pas été défini avant
- C. sans return, f(4) vaut None
- D. il manque une boucle dans f
Réponse
C. sans return, f(4) vaut None — La fonction affiche 8 mais ne renvoie rien : f(4) vaut None, et None + 1 est impossible. Il faut écrire return 2 * x.
range(10, 0, -2) parcourt les entiers :
- A. 10, 8, 6, 4, 2
- B. 10, 9, 8, 7, 6
- C. 10, 8, 6, 4, 2, 0
- D. 8, 6, 4, 2, 0
Réponse
A. 10, 8, 6, 4, 2 — On part de 10, on avance de −2 en −2, et la borne 0 est exclue : on s’arrête à 2. Cela fait 5 valeurs.
Dans une structure if / elif / else, l’ordre des tests :
- A. ne compte pas : tous les tests sont exécutés
- B. compte seulement s’il y a un else
- C. compte : seul le premier test vrai est exécuté
- D. ne compte que dans une boucle
Réponse
C. compte : seul le premier test vrai est exécuté — Dès qu’un test est vrai, son bloc est exécuté et les suivants sont ignorés : on place la condition la plus restrictive en premier.
500 tirages simulés donnent une fréquence de 0,18 pour un événement de probabilité 0,2. On peut en conclure :
- A. c’est normal, la fréquence fluctue
- B. la simulation est fausse
- C. la probabilité 0,2 est fausse
- D. il faut ajouter 0,02 au résultat
Réponse
A. c’est normal, la fréquence fluctue — La fréquence observée sur un échantillon varie d’une simulation à l’autre autour de la probabilité : un écart de 0,02 sur 500 tirages n’a rien d’anormal.
Qu’affiche ce script ?
s = 0 for k in range(1, 5): s = s + k print(s)- A. seulement 10
- B. 0, 1, 3 puis 6
- C. 1, 2, 3 puis 4
- D. 1, 3, 6 puis 10
Réponse
D. 1, 3, 6 puis 10 — Le print est indenté dans la boucle : il s’exécute à chaque tour et affiche les sommes partielles 1, 3, 6 puis 10. Aligné sur le for, il n’afficherait que 10.
Pour parcourir 0 ; 0,01 ; 0,02 ; … ; 1 dans une boucle for, on écrit :
- A.
for x in range(0, 1, 0.01): - B.
for i in range(101): x = i / 100 - C.
for x in range(0, 1.01): - D.
for i in range(100): x = i * 100
Réponse
B.
for i in range(101): x = i / 100— range n’accepte que des entiers. On parcourt les entiers de 0 à 100 et l’on divise par 100 pour obtenir les valeurs décimales voulues.- A.
Que renvoie mystere(5) ?
def mystere(n): s = 0 for k in range(n): if k % 2 == 1: s = s + k return s- A. 9
- B. 4
- C. 6
- D. 10
Réponse
B. 4 — k parcourt 0, 1, 2, 3, 4 et seuls les impairs sont ajoutés : 1 + 3 = 4. On trouverait 9 si k allait jusqu’à 5.
Que renvoie signe(0) ?
def signe(x): if x > 0: return 1 if x < 0: return -1 return 0- A. 1
- B. −1
- C. 0
- D. None
Réponse
C. 0 — Les deux tests sont faux pour x = 0 : on arrive à la dernière ligne, qui renvoie 0. Les return précédents ne sont pas exécutés.
Après a = 3, puis b = a + 2, puis a = 10, la variable b vaut :
- A. 5
- B. 12
- C. 10
- D. 3
Réponse
A. 5 — b a été calculée quand a valait 3 : b = 5. Changer a ensuite ne modifie pas b, qui garde sa valeur.
Pour simuler le lancer d’une pièce équilibrée (1 pour pile, 0 pour face), on peut écrire :
- A.
randint(0, 2) - B.
random() < 1 - C.
randint(1, 2) == 3 - D.
randint(0, 1)
Réponse
D.
randint(0, 1)— randint(0, 1) renvoie 0 ou 1 avec la même probabilité. randint(0, 2) a trois issues, random() < 1 est toujours vrai et randint(1, 2) == 3 toujours faux.- A.
Moi c'est Ben, j'ai créé ce site pour aider le plus d'élèves possible, partout en France. Je peux aussi reprendre avec toi ce qui coince en cours particulier : en visio, ou à domicile si tu es à Marseille.
Prof de maths à Marseille · Cours particuliers au lycée · Aide aux devoirs