Forum Programmation.autre générer des documents aléatoires (quiz) à partir d'une base

Posté par  (site web personnel) .
Étiquettes :
1
21
mar.
2012

Bonjour,
je vais faire une exposition dans un lycée avec des panneaux explicatifs. Il y aura un QCM simple à remplir où les élèves noteront leur nom pour être tiré au sort et recevoir des lots.

Je voudrais que les QCM soient tous différents.

Pour cela, je vais avoir une base de 20 questions et les QCM en comporteront 6 (soit 38760 QCM possibles en théorie).

Idéalement, j'aimerais pouvoir utiliser libreoffice (calc pour la base, writer pour l'impression), avec environ 6 QCM par page.

Ex : la base de questions

  1. Quelle est la couleur du cheval blanc d'Henri IV ?|bleu|blanc|rouge|noir|B
  2. Que pond la poule ?|un oeuf|un neuf|une teuf|un boeuf|A
  3. Si ton tonton tond ton tonton, ton tonton sera…|tonton|tombé|tondu|tonfa|C
  4. Si six scies scient six cyprès, six cents scies scient…|six cyprès|six fois six|six cents cyprès|six scies|C

2 QCM générés

QCM 1
Quelle est la couleur du cheval blanc d'Henri IV ? bleu, blanc, rouge, noir (1)
Si ton tonton tond ton tonton, ton tonton sera… tonton, tombé, tondu, tonfa (3)

QCM 2
Que pond la poule ? un oeuf, un neuf, une teuf, un boeuf (2)
Si ton tonton tond ton tonton, ton tonton sera… tonton, tombé, tondu, tonfa (3)

Remarque : je connais "shuf -n 6 base_question.txt" mais ce n'est pas très pratique pour réellement produire un document publiable (odt/pdf par exemple).

  • # debut de solution

    Posté par  . Évalué à 2.

    1°) tirage avec ce que tu connais, autant de fois que necessaire, en mettant le resultat dans un tableau (un fichier texte avec colonne separée par des virgules)

    Remarque : je connais "shuf -n 6 base_question.txt" mais ce n'est pas très pratique pour réellement produire un document publiable (odt/pdf par exemple).

    2°) publipostage avec openoffice qui va chercher les données dans le tableau precedemment generé

    • [^] # Re: debut de solution

      Posté par  (site web personnel) . Évalué à 1. Dernière modification le 23 mars 2012 à 23:27.

      Tu as raison, NeoX, je vais finalement utiliser shuf.

      Donc un truc qui va ressembler à ça :

      #! /bin/bash
      
      echo "début" > test.txt
      
      for ((i = 0; i <= 60; i += 1))
      do
      echo "Nom/Prénom : .................." >> test.txt  
      echo `shuf -n 6 base-questions.txt` >> test.txt
      done
      
      

      puis copier-coller dans openoffice en se débrouillant pour les QCM aient tous le même format (sinon LaTeX effectivement, lenod).

      Par contre,

      echo `shuf -n 6 base-questions.txt` >> test.txt 
      
      

      ne fait pas de renvois à la ligne alors qu'avec

      shuf -n 6 base-questions.txt 
      
      

      toutes les questions sont chacune sur une ligne différente. Ce n'est qu'un problème très mineur, juste une interrogation…

      • [^] # Re: debut de solution

        Posté par  . Évalué à 2.

        parce que echo prend ce qui suis comme etant une seule et meme chaine de caractere.

        en l'occurence dans ton script il ne sert à rien sur le shuf -n6 ….

  • # fonction ALEA.ENTRE.BORNES( )

    Posté par  (site web personnel) . Évalué à 1.

    Dans calc tu as la fonction ALEA.ENTRE.BORNES( )
    elle peut te servir à faire une table calc contenant le numéro des questions de chaque formulaire.
    ensuite ta fusion publipostage prendra le numéro, iras chercher dans la liste des questions et affichera le tout.

    Pour éviter (tout au moins limiter) le risque d'avoir des questions identiques, on peut ajouter une condition pour relancer la fonction aléatoire…

  • # docbook

    Posté par  . Évalué à 2.

    Avec docbook et shuf tu dois pouvoir bricoler qqe chose : un fichier avec l’entête du doc xml, une partie générée via shuf sur une liste de question mise en for;e en docbook puis un footer pour terminer le doc. Tu peux ensuite générer le html ou le pdf.

    • [^] # Re: docbook

      Posté par  . Évalué à 1.

      Tu peux faire la même chose avec latex si ça te parle plus (les statistiques sont avec moi ;)).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.