From 77986b320dfc33625ea2df7f4049cb6c7f8c222e Mon Sep 17 00:00:00 2001 From: Denise sur Lya Date: Wed, 28 Jul 2021 10:31:46 +0200 Subject: =?UTF-8?q?Am=C3=A9liorations=20diverses.=20Lancement=20officiel?= =?UTF-8?q?=20de=20la=20b=C3=AAta=20!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gere_grille.py | 67 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 16 deletions(-) (limited to 'gere_grille.py') diff --git a/gere_grille.py b/gere_grille.py index 9a472ed..6898f52 100644 --- a/gere_grille.py +++ b/gere_grille.py @@ -5,31 +5,49 @@ Created on Mon Jul 26 22:58:28 2021 @author: sekhmet """ -import random -import zlib, base64, json +import random, zlib, base64, json import gere_erreurs as e from config import DEFAUT, CONFIG def genere_grille(config, textes): - """ génère une grille avec des éléments aléatoires du tableau textes. Si y'a pas assez, on complète aléatoirement avec des 0. - config contient tout ce qu'on veut pour la grille""" + """ génère une grille avec des éléments aléatoires du tableau textes. + textes est un tableau de tableau : la phrase, puis les réponses + Dans la grille on mettra une liste avec la question et les réponses + Si y'a pas assez, on met la liste vide [] + + config contient tout ce qu'on veut pour la grille, + ici on utilisera les dimensions et les phrases_additionnelles + on enlève aussi les réponses si config['reponses_presentes'] n'est pas là""" nblignes, nbcol = config["nblignes"], config["nbcolonnes"] - # Créer la grille - grille = [ [""]*nbcol for i in range(nblignes)] - nbdata = nbcol*nblignes - config["nbcasesvides"] # Nombre d'entrées + soustab = config.get("phrases_add",[]).copy() # On met les phrases custom en premier + soustab = soustab + [ [] ]*config["nbcasesvides"] # On ajoute les blocs vides voulus + + #print(soustab) - # Créer le sous-tableau - if len(textes)>= nbdata: # Si y'a assez de textes - soustab = random.sample(textes, nbdata) + ["0"]*config["nbcasesvides"] - else: - # On met tous les textes + complète avec des "0" - soustab = textes + ["0"]*(nbcol*nblignes - len(textes)) - random.shuffle(soustab) + nbdata = nbcol*nblignes - config["nbcasesvides"]-len(config.get("phrases_add", [])) # Nombre d'entrées à prendre + if nbdata>0: # Sinon y'a pas besoin du tableau + if nbdata <= len(textes): + soustab = soustab+random.sample(textes, nbdata) + else: # on n'a pas assez de textes, on met des 0 + soustab = soustab + textes + ['0']*(nbdata - len(textes)) + #print(soustab) + # On mélange ! + random.shuffle(soustab) + # Si on ne veut pas des réponses, on ne garde que le premier élément + if not(config.get("reponses_presentes", True)): + #print("Je veux pas les réponses !") + soustab = [ [elt[0] ] for elt in soustab ] + #print(soustab) + + + # Créer la grille + grille = [ [ [] ]*nbcol for i in range(nblignes)] + # On met tout ça dans la grille for i in range(nblignes): for j in range(nbcol): @@ -86,8 +104,21 @@ def gere_donnees_custom(data, liste_err): # Les cases vides conf["nbcasesvides"] = minimaxi(data.get("nbcasesvides",""), 0, CONFIG["maxlignes"]*CONFIG["maxcolonnes"], DEFAUT["nbcasesvides"], liste_err) + # Les phrases additionnelles + conf["phrases_add"] = [] + i=0 + while "phrase_add_"+str(i) in data: + p = data.get("phrase_add_"+str(i), "") + if len(p)>1: + conf["phrases_add"].append([p]) + i=i+1 + + # Veut-on les réponses ? + conf["reponses_presentes"] = gere_checkbox(data.get("reponses_presentes","")) + return conf -### + +### Fonctions pour gérer les données saisies def minimaxi(donnee, mini, maxi, defaut, liste_err): """ donnee est une chaine qui est censée être un nombre entier. On vérifie que la donnée est valide, qu'elle est bien dans l'inter @@ -98,4 +129,8 @@ def minimaxi(donnee, mini, maxi, defaut, liste_err): e.warning("La donnée "+donnee+ "est invalide !", liste_err) x = defaut x = max(mini, min(x, maxi)) - return x \ No newline at end of file + return x + +def gere_checkbox(donnee): + """ renvoie True si la donnee est à "on" et False sinon""" + return donnee == "on" \ No newline at end of file -- cgit v1.2.3