Je réserve ici
Mathématiques 2ⁿᵈᵉ

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
Un QCM d’algorithmique et programmation en trois niveaux de douze questions : syntaxe Python, range, quotient et reste, traces de petits scripts, condition d’un while, print et return, boucles infinies et simulations. Chaque réponse est expliquée.

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
  1. 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 ==.

  2. 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.

  3. 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.

  4. 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.

  5. 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[.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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
  1. 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.

  2. 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é.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

Bloqué sur ce chapitre ?

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