Aller au contenu

Des QCMs⚓

Le principe⚓

Le thÚme propose une macro multi_qcm, qui permet de construire des groupes de questions à choix simples ou multiples, avec évaluation automatique du résultat, avec ou sans affichage de la correction.

Pour tester ses réponses, il suffit de cocher ses choix, puis de cliquer sur le bouton de vérification : le compteur de réponses correctes s'affiche alors.

Les qcms sont "rejouables" à volonté (bouton recommencer) et ont donc valeur d'évaluation formative.

Un Qcm avec une seule question

  1. Quelle est la réponse ?

    • 4

    • 2

    • 42

La documentation complĂšte

tout sur les qcm

La syntaxe⚓

La macro {{ multi_qcm(...)}} prend en argument, pour chaque question, une liste comprenant trois ou quatre éléments :

  • la question, de type str qui peut ĂȘtre du markdown avec du code, du latex (mais attention, il faudra doubler les \) ; par exemple : "Quelle est la rĂ©ponse ?"
  • une liste de rĂ©ponses ; par exemple : ["4", "2", "42"]
  • une liste contenant le numĂ©ro de la bonne rĂ©ponse ou des bonnes rĂ©ponses ; par exemple : [3]. Attention, ce n'est pas l'indice !
  • un dictionnaire (optionnel) qui contient des options spĂ©cifiques Ă  cette question. À l'heure actuelle, une seule option est couverte 'multi': bool (voir ci-dessous)

Il faut Ă©galement renseigner obligatoirement les deux arguments :

  • multi : rĂ©glage pour toutes les questions du qcm, indiquant si les questions n'ayant qu'une seule bonne rĂ©ponse sont Ă  choix multiples ou pas.
  • DEBUG : affiche ou non dans la console le code markdown gĂ©nĂ©rĂ© pour ce qcm durant le build.

Il est conseillé de renseigner aussi l'argument qcm_title qui par défaut vaut 'Question'. Il y a d'autres arguments facultatifs que l'on verra plus loin.

Le code de l'exemple complet

{{ multi_qcm(
    [
    "Quelle est la réponse ?",
    ["4", "2", "42"],
    [3]
    ],
    qcm_title = "Un Qcm avec une seule question",
    multi = False,
    DEBUG = False
) }}

Un Qcm avec une seule question

  1. Quelle est la réponse ?

    • 4

    • 2

    • 42

Remarque

On remarquera que les boutons réponses sont des boutons radio. Pour multi = True, les boutons réponses sont des cases à cocher.

Les paramĂštres optionnels⚓

On peut renseigner, en plus, les options suivantes :

paramÚtre type valeur par défaut description
hide bool False si on la met à True, un masque apparaßt au-dessus des boutons pour signaler à l'utilisateur que les réponses resteront cachées aprÚs validation.
shuffle bool False si on la met à True, les questions et les réponses seront mélangées.
admo_kind str '!!!' type d'admonition utilisée pour les questions ('???' et '???+' sont également utilisables).
admo_class str 'tip' classe d'admonition

Exemples⚓

QCM avec une seule bonne réponse et avec correction

{{ multi_qcm(
    [
    """
    On a saisi le code suivant :
    ```python title=''
    n = 8
    while n > 1:
        n = n/2
    ```

    Que vaut `n` aprÚs l'exécution du code ?
    """,
    [
    "2.0",
    "4.0",
    "1.0",
    "0.5",
    ],
    [3]
    ],
    multi = False,
    qcm_title = "Un QCM avec mélange automatique des réponses",
    DEBUG = False,
    shuffle = True,
    admo_class = 'question'
) }}

Un QCM avec mélange automatique des réponses

  1. On a saisi le code suivant :
    n = 8
    while n > 1:
        n = n/2
    

    Que vaut n aprÚs l'exécution du code ?

    • 2.0

    • 4.0

    • 1.0

    • 0.5

QCM avec une seule bonne réponse et sans correction

Seul le score indiquera combien il y a de bonnes réponses.

{{ multi_qcm(
    [
    """
    On a saisi le code suivant :
    ```python title=''
    n = 8
    while n > 1:
        n = n/2
    ```

    Que vaut `n` aprÚs l'exécution du code ?
    """,
    [
    "2.0",
    "4.0",
    "1.0",
    "0.5",
    ],
    [3]
    ],
    [
    "Quelle est la machine qui va exécuter un programme JavaScript inclus dans une page HTML ?",
    [
    "La machine de l’utilisateur sur laquelle s’exĂ©cute le navigateur web.",
    "La machine de l’utilisateur ou du serveur, selon celle qui est la plus disponible.",
    "La machine de l’utilisateur ou du serveur, suivant la conïŹdentialitĂ© des donnĂ©es manipulĂ©es.",
    "Le serveur web sur lequel est stockée la page HTML."
    ],
    [1],
    ],
    multi = False,
    qcm_title = "Un QCM avec mélange automatique des questions et réponses (bouton en bas pour recommencer)",
    DEBUG = False,
    shuffle = True,
    admo_class = 'question',
    hide = True
) }}

Un QCM avec mélange automatique des questions et réponses (bouton en bas pour recommencer)

  1. On a saisi le code suivant :
    n = 8
    while n > 1:
        n = n/2
    

    Que vaut n aprÚs l'exécution du code ?

    • 2.0

    • 4.0

    • 1.0

    • 0.5

  2. Quelle est la machine qui va exécuter un programme JavaScript inclus dans une page HTML ?

    • La machine de l’utilisateur sur laquelle s’exĂ©cute le navigateur web.

    • La machine de l’utilisateur ou du serveur, selon celle qui est la plus disponible.

    • La machine de l’utilisateur ou du serveur, suivant la conïŹdentialitĂ© des donnĂ©es manipulĂ©es.

    • Le serveur web sur lequel est stockĂ©e la page HTML.

QCM avec une ou plusieurs réponses selon les questions

Si on souhaite mélanger des réponses unique ou multiples, il faut choisir la valeur de multi par défaut et indiquer dans un dictionnaire le choix particulier par question. Ici on a choisi multi = False pour le comportement global et on ajoute {'multi': True} dans la liste de la question concernée.

{{ multi_qcm(
[
"""
On a saisi le code suivant :
```python title=''
n = 8
while n > 1:
    n = n/2
```

Que vaut `n` aprÚs l'exécution du code ?
""",
[
"2.0",
"4.0",
"1.0",
"0.5",
],
[3]
],
[
"Quelle est la machine qui va exécuter un programme JavaScript inclus dans une page HTML ?",
[
"La machine de l’utilisateur sur laquelle s’exĂ©cute le navigateur web.",
"La machine de l’utilisateur ou du serveur, selon celle qui est la plus disponible.",
"La machine de l’utilisateur ou du serveur, suivant la conïŹdentialitĂ© des donnĂ©es manipulĂ©es.",
"Le serveur web sur lequel est stockée la page HTML."
],
[1],
],
[
"""
Cocher toutes les bonnes réponses
```python title=''
meubles = ['Table', 'Commode', 'Armoire', 'Placard', 'Buffet']
```
""",
[
"`#!py meubles[1]` vaut `#!py Table`",
"`#!py meubles[1]` vaut `#!py Commode`",
"`#!py meubles[4]` vaut `#!py Buffet`",
"`#!py meubles[5]` vaut `#!py Buffet`",
],
[2, 3],
{'multi': True}
],
multi = False,
qcm_title = "Un QCM avec mélange automatique des questions (bouton en bas pour recommencer)",
DEBUG = False,
shuffle = True
) }} 

Un QCM avec mélange automatique des questions (bouton en bas pour recommencer)

  1. On a saisi le code suivant :
    n = 8
    while n > 1:
        n = n/2
    

    Que vaut n aprÚs l'exécution du code ?

    • 2.0

    • 4.0

    • 1.0

    • 0.5

  2. Quelle est la machine qui va exécuter un programme JavaScript inclus dans une page HTML ?

    • La machine de l’utilisateur sur laquelle s’exĂ©cute le navigateur web.

    • La machine de l’utilisateur ou du serveur, selon celle qui est la plus disponible.

    • La machine de l’utilisateur ou du serveur, suivant la conïŹdentialitĂ© des donnĂ©es manipulĂ©es.

    • Le serveur web sur lequel est stockĂ©e la page HTML.

  3. Cocher toutes les bonnes réponses
    meubles = ['Table', 'Commode', 'Armoire', 'Placard', 'Buffet']
    

    • meubles[1] vaut Table

    • meubles[1] vaut Commode

    • meubles[4] vaut Buffet

    • meubles[5] vaut Buffet