On considère des données concernant des écoles :https://opendata.lillemetropole.fr/explore/dataset/effectifs-scolaires-par-ecole-armentieres/information/
Récupérer les données json et compléter le programme python ci-dessous pour qu’il permette de classer ces écoles par effectif décroissant.
import json
# on ouvre le fichier json
with open(...................................) as mon_fichier:
# on stocke les donnees
donnees = json.load(mon_fichier)
def recherche_max_eleves(data):
'''
retourne l'index dans la liste data de
l'école ayant le plus d'élèves
: data : list
>>>recherche_max(donnees)
12
'''
# par defaut le nbre max est le nombre d'eleves
# de la premiere ecole de mes data
max_eleves=..............................
# par defaut l'indice max est l'indice de la premiere
# ecole de mes data
indice_max=............................
# on parcourt les data par l'indice i
for i in range(........................):
# si le nombre d'eleves de l'ecole d'indice i
# est supérieur au max
if ...................... > max_eleves:
# il devient le nouveau max
max_eleves=....................................
# on memorise l'indice correspondant
indice_max=.................
# on retourne l'indice ou on a trouvé le max d'élèves
return ...........................
def classement_par_nombre(mes_donnees):
'''
retourne la liste des écoles classées par
effectif décroissant, chaque école étant identifiée
par un dictionnaire ayant pour clés 'nom' et 'effectif'
et les valeurs attribuées correspondantes
'''
# on fait une copie de mes_donnees
data_a_classer=...............................
# on crée une liste vide des data classees
data_classees=.......................................
# tant qu'il reste des datas à classer
while ..................... >0:
# on cherche l'indice correspondant au max d'eleves
i=recherche_max_eleves(data_a_classer)
# on crée un dictionnaire
ecole=...................................
# à la clé "nom" on attribue la valeur correspondant
# au nom de l'ecole d'indice i de mes data à classer
...................=data_a_classer[i]['fields']['nom_de_l_ecole']
# à la clé "effectif" on attribue la valeur correspondant
# au nombre d'élèves de l'ecole d'indice i
ecole["effectif"]=....................................
# on ajoute le dictionnaire ecole à la liste des data classées
...............................
# on supprime l'ecole des ecoles à classer grâce à son indice
.................................
# on renvoie les ecoles classées
return ..........................
Proposition de correction :
import json
# on ouvre le fichier json
with open("ecoles.json") as mon_fichier:
# on stocke les donnees
donnees = json.load(mon_fichier)
def recherche_max_eleves(data):
max_eleves=data[0]["nombre_d_eleves"]
indice_max=0
for i in range(len(data)):
if data[i]["nombre_d_eleves"] > max_eleves:
max_eleves=data[i]["nombre_d_eleves"]
indice_max=i
return indice_max
def classement_par_nombre(mes_donnees):
'''
retourne la liste des écoles classées par
effectif décroissant, chaque école étant identifiée
par un dictionnaire ayant pour clés 'nom' et 'effectif'
et les valeurs attribuées correspondantes
'''
data_a_classer=mes_donnees
data_classees=[]
while len(data_a_classer) >0:
i=recherche_max_eleves(data_a_classer)
ecole={}
ecole["nom"]=data_a_classer[i]['nom_de_l_ecole']
ecole["effectif"]=data_a_classer[i]['nombre_d_eleves']
data_classees.append(ecole)
del(data_a_classer[i])
return data_classees