SNT

Cours de SNT
git clone git://git.vgx.fr/SNT
Log | Files | Refs

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