Je vais vous expliquer ici comment générer un QCM à l’aide de Python et LaTeX à partir d’un simple fichier texte.
Générer un QCM à l’aide de Python et LaTeX: pré-requis
Avant de vous lancer dans cette aventure, il vous faudra déjà avoir sur votre machine:
- une distribution \(\LaTeX\)
- Python 3.10 minimum
Vous avez déjà ça? C’est cool! Sinon, ce n’est pas la peine de continuer… Il vous faudra avant tout installer tout ça.
Générer un QCM à l’aide de Python et LaTeX: le fichier texte et le résultat
Avant de rentrer dans le vif du sujet, de quoi s’agit-il ?
Tout est parti de ma volonté de créer des quiz sur ce site… Il n’y a aucun plugins WordPress qui me va… J’ai donc voulu créer des QCM via \(\LaTeX\) (car c’est quand-même plus joli). Mais je ne voulais pas passer deux heures à écrire les questions.
J’ai donc imaginé que je pouvais créer un fichier texte basique à partir duquel serait généré mon beau QCM.
À quoi ressemble le fichier texte ? Voici un exemple:
T-
Ensembles de nombres
N-
Seconde générale
C-
Pour chacune des questions suivantes, une seule réponse est exacte. Laquelle ? Cochez la bonne réponse.
DEBUT-
Q-
Quel est le plus petit ensemble contenant $\dfrac{7}{4}$ ?
R-
$\N$|0
$\Z$|0
$\D$|1
$\Q$|0
$\R$|0
Q-
Quel est le plus petit ensemble contenant $\sqrt\pi$ ?
R-
$\N$|0
$\Z$|0
$\D$|0
$\Q$|0
$\R$|1
FIN-
Analysons-le. Pour délimiter les différentes sections, j’ai utilisé:
- “T-” suivi, à la ligne, du titre du QCM
- “N-” suivi, à la ligne, du niveau du QCM
- “C-” suivi, à la ligne, de la consigne
- “DEBUT-” indique que les questions vont commencer
- “Q-” suivi, à la ligne, d’une question
- “R-” suivi, à la ligne, des multiples réponses au format “<réponse>|<0 ou 1>”, où “0” indique que c’est la mauvaise réponse et “1”, la bonne.
- “FIN-” désigne la fin des questions
Je vous livre sans plus attendre les résultats (le sujet et sa correction):
Et ceci a été obtenu avec la simple commande:
>>> qcm('Seconde/QCM01.txt', colonnes=5, solution=False)
>>> qcm('Seconde/QCM01.txt', colonnes=5, solution=True)
Voici la vidéo de démo:
Le module Python
Vous pouvez télécharger le fichier ZIP ci-dessous:
Dans ce fichier ZIP, vous trouverez un répertoire QCM Mathweb dans lequel se trouvent:
- un fichier “preambule.tex” servant de… préambule pour le fchier \(\LaTeX\) généré
- un fichier “qcmmathweb.py”, le module Python
- un fichier “qcm.py” servant d’exemple pour générer les QCM donnés en exemple ci-dessus
- un dossier “Seconde” dans lequel se trouve un fichier “QCM01.txt” servant de base pour le CQM à créer
Une fois décompressé, vous pouvez exécuter directement le script du fichier qcm.py afin de voir si tout fonctionne.
Les utilisateurs de MacOS et Linux pourront peut-être rencontrer des difficultés (car j’ai testé ceci uniquement sous Windows). Les retours seront donc les bienvenus en commentaire sur cette page.
Ce module est destiné à évoluer en fonction des diverses remarques qui me seront adressées en commentaires.
Si ce module vous plaît, n’hésitez pas à noter cette page (sans retour, je n’aurai pas la motivation de continuer)
Le logiciel Auto Multiple Choice, sous licence GPLv2, est très avancé sur ce sujet. Je l’utilise régulièrement pour corriger automatiquement des QCM faits sur papier.
Site : https://www.auto-multiple-choice.net/index.fr
Code source : https://gitlab.com/a10684/auto-multiple-choice/
Il fonctionne sous Linux et MacOS, mais pas sous Windows.
Cela peut être intéressant pour certain.e.s enseignant.e.s mais ce n’est pas ce que je cherchais à faire. Je cherchais bien à générer des QCM, ainsi que les QCM corrigés, à partir d’un fichier texte.
Bonjour,
Le lien pour telecharger le code python ne fonctionne pas.
MErci pour votre travail et ce partage
Bonjour. En effet, il y avait un problème dans le nom du fichier. Je viens de le rectifier. Grand merci 🙂
Bonjour, je n’arrive pas à compiler chez moi…
*** Python 3.4.5 |Continuum Analytics, Inc.| (default, Jul 5 2016, 14:56:50) [MSC v.1600 32 bit (Intel)] on win32. ***
*** Distant Python engine is active ***
>>>
*** Console de processus distant Réinitialisée ***
Traceback (most recent call last):
File “C:\Users\jp\Desktop\QCM Mathweb\qcm.py”, line 1, in <module>
from qcmmathweb import qcm
File “C:\Users\jp\Desktop\QCM Mathweb\qcmmathweb.py”, line 36
match line:
^
SyntaxError: invalid syntax
savez vous d’où vient ce bugg ????
MERCI
Bonjour.
Avec Python 3.4, “match” n’existe pas. Il faut Python 3.10 minimum.