questgen.py (6959B)
1 #!/bin/python 2 3 from random import choice 4 import csv 5 6 def genquestions(eleve, data): 7 qfile = open("out/Questions-" + eleve["nom"] + '-' + eleve["prenom"] + ".md", 'w') 8 afile = open("out/Corrige-questions-" + eleve["nom"] + '-' + eleve["prenom"] + ".md", 'w') 9 10 print("# Questions sur les données hospitalières\n", file=qfile) 11 print("Pour {} {}.\n".format(eleve["prenom"], eleve["nom"]), file=qfile) 12 13 print("# Corrigé des questions sur les données hospitalières\n", file=afile) 14 print("Pour {} {}.\n".format(eleve["prenom"], eleve["nom"]), file=afile) 15 16 # Question 1 17 expl_descr1 = choice(descrs) 18 19 print("## 1. D'après les métadonnées, à quoi correspond le descripteur '{}' ?\n".format(expl_descr1[0]), file=qfile) 20 21 print("## 1. D'après les métadonnées, à quoi correspond le descripteur '{}' ?\n".format(expl_descr1[0]), file=afile) 22 print("Le descripteur '{}' correspond au **{}**.\n".format(expl_descr1[0], expl_descr1[1]), file=afile) 23 24 25 # Question 2 26 expl_descr2 = choice(descrs) 27 28 while expl_descr2 == expl_descr1: 29 expl_descr2 = choice(descrs) 30 print("## 2. D'après les métadonnées, quel descripteur représente le **{}** ?\n".format(expl_descr2[1]), file=qfile) 31 32 print("## 2. D'après les métadonnées, quel descripteur représente le **{}** ?\n".format(expl_descr2[1]), file=afile) 33 print("Le descripteur '{}' correspond au {}.\n".format(expl_descr2[0], expl_descr2[1]), file=afile) 34 35 # Question 3 36 dep = choice(deps) 37 38 print("## 3. __Filtrez__ les départements pour ne garder que le {} ({}), quelle est la date du premier objet (première ligne) ?\n".format(dep[0], dep[1]), file=qfile) 39 40 print("## 3. __Filtrez__ les départements pour ne garder que le {} ({}), quelle est la date du premier objet (première ligne) ?\n".format(dep[0], dep[1]), file=afile) 41 print("La première date est le 2020-03-18 (23 mars 2020).\n", file=afile) 42 43 # Question 4 44 print("## 4. __Triez__ les dates par ordre décroissant pour avoir la plus récente (presque actuelle) en haut, " 45 "combien d'hommes (sexe=1) et de femmes (sexe=2) sont actuellement hospitalisés ?\n", file=qfile) 46 47 print("En {} il y a actuellement __ hommes et __ femmes hospitalisés.\n".format(dep[1]), file=qfile) 48 49 print("## 4. __Triez__ les dates par ordre décroissant pour avoir la plus récente (presque actuelle) en haut, " 50 "combien d'hommes (sexe=1) et de femmes (sexe=2) sont actuellement hospitalisés ?\n", file=afile) 51 52 datadep = [line for line in data if line["dep"] == dep[0]] 53 #datadep.sort(key=lambda line : line["jour"]) 54 55 datadep_h = [line for line in datadep if line["sexe"] == "1"] 56 #datadep_h.sort(key=lambda line : line["jour"]) 57 datadep_f = [line for line in datadep if line["sexe"] == "2"] 58 #datadep_f.sort(key=lambda line : line["jour"]) 59 print("En {} il y a actuellement {} hommes et {} femmes hospitalisés.\n".format(dep[1], datadep_h[-1]["hosp"], datadep_f[-1]["hosp"]), file=afile) 60 61 62 # Question 5 63 sexe = choice(sexes) 64 print("## 5. __Filtrez__ pour ne garder que les {} (sexe={}) en conservant le filtre de département ({}), ".format(sexe[1], sexe[0], dep[0]), 65 "**triez** par nombre de personnes hospitalisées ('hosp') décroissantes.\n", file=qfile) 66 print("### 5.1 Quel jour y avait-t-il le plus de {} à l'hôpital en {} ?\n".format(sexe[1], dep[1]), 67 file=qfile) 68 69 print("## 5. __Filtrez__ pour ne garder que les {} (sexe={}) en conservant le filtre de département ({}), ".format(sexe[1], sexe[0], dep[0]), 70 "**triez** par nombre de personnes hospitalisées ('hosp') décroissantes.\n", file=afile) 71 print("### 5.1 Quel jour y avait-t-il le plus de {} à l'hôpital en {} ?\n".format(sexe[1], dep[1]), 72 file=afile) 73 74 dataq5 = [line for line in datadep if line["sexe"] == sexe[0]] 75 dataq5.sort(key=lambda line: -int(line["hosp"])) 76 77 print("Le pic de personnes à l'hôpital a été atteint le {}.\n".format(dataq5[0]["jour"]), file=afile) 78 79 80 print("### 5.2 Quel était alors le nombre de {} hospitalisés en {} ?\n".format(sexe[1], dep[1]), 81 file=qfile) 82 83 print("### 5.2 Quel était alors le nombre de {} hospitalisés en {} ?\n".format(sexe[1], dep[1]), 84 file=afile) 85 86 print("Il y en avait {}.\n".format(dataq5[0]["hosp"]), file=afile) 87 88 print("### 5.3 Est-ce que c'était pendant la première ou la 2ème vague du virus ?\n", 89 file=qfile) 90 91 print("### 5.3 Est-ce que c'était pendant la première ou la 2ème vague du virus ?\n", 92 file=afile) 93 print("C'était la 2ème vague.\n".format(dataq5[0]["hosp"]), file=afile) 94 95 # Question 6 96 print("## 6. Re-triez par jour décroissant et pour les 2 sexes (sexe=0), " 97 "est-ce qu'il y a actuellement plus de personnes en réanimation en Charente (16) ou en {} ({}) ?\n".format(dep[1], dep[0]), 98 file=qfile) 99 100 print("## 6. Re-triez par jour décroissant et pour les 2 sexes (sexe=0), " 101 "est-ce qu'il y a actuellement plus de personnes en réanimation en Charente (16) ou en {} ({}) ?\n".format(dep[1], dep[0]), 102 file=afile) 103 104 deprea = int(datadep[0]["rea"]) 105 data16 = [line for line in data if line["dep"] == "16" and line["sexe"] == "0"] 106 charrea = int(data16[0]["rea"]) 107 108 if deprea == charrea: 109 print("Il y a autant de personnes en réanimation en {} et en Charente : {} \n".format(dep[1], deprea), file=afile) 110 elif deprea > charrea: 111 print("Il y a plus de personnes en réanimation en {} qu'en Charente : {} > {} \n".format(dep[1], deprea, charrea), file=afile) 112 else: 113 print("Il y a moins de personnes en réanimation en {} qu'en Charente : {} < {} \n".format(dep[1], deprea, charrea), file=afile) 114 115 116 117 118 119 descrs = [ 120 ("hosp","nombre de personnes hospitalisées"), 121 ("rea","nombre de personnes en réanimation ou soins intensifs"), 122 ("rad","nombre cumulé de personnes retournées à domicile"), 123 ("dc","nombre cumulé de personnes décédées à l'hôpital") 124 ] 125 126 sexes = [ 127 ("0", "personnes des 2 sexes"), 128 ("1", "hommes"), 129 ("2", "femmes") 130 ] 131 132 deps = [ 133 #("16", "Charente"), 134 ("17", "Charente-Maritime"), 135 ("24", "Dordogne"), 136 ("33", "Gironde"), 137 ("79", "Deux-Sèvres"), 138 ("86", "Vienne"), 139 ("87", "Haute-Vienne") 140 ] 141 142 def getdata(): 143 with open('donnees-hospitalieres-covid19-2020-12-06-19h03.csv', mode='r') as csv_file: 144 csv_reader = csv.DictReader(csv_file, delimiter=';') 145 data = [line for line in csv_reader] 146 with open('eleves.csv', mode='r') as csv_eleves: 147 csv_reader = csv.DictReader(csv_eleves, delimiter=',') 148 eleves = [line for line in csv_reader] 149 return data, eleves 150 151 data, eleves = getdata() 152 153 i=0 154 for eleve in eleves: 155 print(i, "/", len(eleves)) 156 i+=1 157 genquestions(eleve, data) 158