summaryrefslogtreecommitdiff
path: root/gere_grille.py
diff options
context:
space:
mode:
Diffstat (limited to 'gere_grille.py')
-rw-r--r--gere_grille.py67
1 files changed, 51 insertions, 16 deletions
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
5 5
6@author: sekhmet 6@author: sekhmet
7""" 7"""
8import random 8import random, zlib, base64, json
9import zlib, base64, json
10import gere_erreurs as e 9import gere_erreurs as e
11from config import DEFAUT, CONFIG 10from config import DEFAUT, CONFIG
12 11
13def genere_grille(config, textes): 12def genere_grille(config, textes):
14 """ 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. 13 """ génère une grille avec des éléments aléatoires du tableau textes.
15 config contient tout ce qu'on veut pour la grille""" 14 textes est un tableau de tableau : la phrase, puis les réponses
15 Dans la grille on mettra une liste avec la question et les réponses
16 Si y'a pas assez, on met la liste vide []
17
18 config contient tout ce qu'on veut pour la grille,
19 ici on utilisera les dimensions et les phrases_additionnelles
20 on enlève aussi les réponses si config['reponses_presentes'] n'est pas là"""
16 21
17 nblignes, nbcol = config["nblignes"], config["nbcolonnes"] 22 nblignes, nbcol = config["nblignes"], config["nbcolonnes"]
18 23
19 # Créer la grille
20 grille = [ [""]*nbcol for i in range(nblignes)]
21 24
22 nbdata = nbcol*nblignes - config["nbcasesvides"] # Nombre d'entrées 25 soustab = config.get("phrases_add",[]).copy() # On met les phrases custom en premier
26 soustab = soustab + [ [] ]*config["nbcasesvides"] # On ajoute les blocs vides voulus
27
28 #print(soustab)
23 29
24 # Créer le sous-tableau 30 nbdata = nbcol*nblignes - config["nbcasesvides"]-len(config.get("phrases_add", [])) # Nombre d'entrées à prendre
25 if len(textes)>= nbdata: # Si y'a assez de textes 31 if nbdata>0: # Sinon y'a pas besoin du tableau
26 soustab = random.sample(textes, nbdata) + ["0"]*config["nbcasesvides"] 32 if nbdata <= len(textes):
27 else: 33 soustab = soustab+random.sample(textes, nbdata)
28 # On met tous les textes + complète avec des "0" 34 else: # on n'a pas assez de textes, on met des 0
29 soustab = textes + ["0"]*(nbcol*nblignes - len(textes)) 35 soustab = soustab + textes + ['0']*(nbdata - len(textes))
30 random.shuffle(soustab) 36
31 #print(soustab) 37 #print(soustab)
38 # On mélange !
39 random.shuffle(soustab)
32 40
41 # Si on ne veut pas des réponses, on ne garde que le premier élément
42 if not(config.get("reponses_presentes", True)):
43 #print("Je veux pas les réponses !")
44 soustab = [ [elt[0] ] for elt in soustab ]
45 #print(soustab)
46
47
48 # Créer la grille
49 grille = [ [ [] ]*nbcol for i in range(nblignes)]
50
33 # On met tout ça dans la grille 51 # On met tout ça dans la grille
34 for i in range(nblignes): 52 for i in range(nblignes):
35 for j in range(nbcol): 53 for j in range(nbcol):
@@ -86,8 +104,21 @@ def gere_donnees_custom(data, liste_err):
86 # Les cases vides 104 # Les cases vides
87 conf["nbcasesvides"] = minimaxi(data.get("nbcasesvides",""), 0, CONFIG["maxlignes"]*CONFIG["maxcolonnes"], DEFAUT["nbcasesvides"], liste_err) 105 conf["nbcasesvides"] = minimaxi(data.get("nbcasesvides",""), 0, CONFIG["maxlignes"]*CONFIG["maxcolonnes"], DEFAUT["nbcasesvides"], liste_err)
88 106
107 # Les phrases additionnelles
108 conf["phrases_add"] = []
109 i=0
110 while "phrase_add_"+str(i) in data:
111 p = data.get("phrase_add_"+str(i), "")
112 if len(p)>1:
113 conf["phrases_add"].append([p])
114 i=i+1
115
116 # Veut-on les réponses ?
117 conf["reponses_presentes"] = gere_checkbox(data.get("reponses_presentes",""))
118
89 return conf 119 return conf
90### 120
121### Fonctions pour gérer les données saisies
91def minimaxi(donnee, mini, maxi, defaut, liste_err): 122def minimaxi(donnee, mini, maxi, defaut, liste_err):
92 """ donnee est une chaine qui est censée être un nombre entier. 123 """ donnee est une chaine qui est censée être un nombre entier.
93 On vérifie que la donnée est valide, qu'elle est bien dans l'inter 124 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):
98 e.warning("La donnée "+donnee+ "est invalide !", liste_err) 129 e.warning("La donnée "+donnee+ "est invalide !", liste_err)
99 x = defaut 130 x = defaut
100 x = max(mini, min(x, maxi)) 131 x = max(mini, min(x, maxi))
101 return x \ No newline at end of file 132 return x
133
134def gere_checkbox(donnee):
135 """ renvoie True si la donnee est à "on" et False sinon"""
136 return donnee == "on" \ No newline at end of file