Télécharger le fichier json de la liste des jardins remarquables en France (1944-1999) à l’adresse ci-desous :
On considère le programme python ci-dessous :
import json
# on ouvre le fichier json effectifs-armentieres
with open('liste-des-jardins-remarquables.json') as mon_fichier:
# on stocke les donnees
donnees = json.load(mon_fichier)
def recherche_par_region(nom_region):
'''
retourne la liste des jardins remarquables dans
la région
recherche_par_region("Occitanie") ou recherche_par_region("occitanie") doivent renvoyer la même liste
>>>len(recherche_par_region("Occitanie"))
43
'''
# on convertit en minuscules le nom de la region
nom_region=nom_region.lower()
# on utilise la variable globale donnees pour eviter de
# la passer en paramètre
global donnees
donnees_retour=.................................
# on parcourt les donnees
for jardin in donnees:
# si le nom de la region n'est pas vide
if .................... !=None:
# on convertit le nom de la region en minuscules
region_jardin=..........................
# si le nom recherché est dans le nom de la region
if .............................. :
# on ajoute au donnees à retourner le jardin
..................................
return ..................
Exercice 1 : 8 points
Recopier ce programme et compléter les 6 lignes en pointillés de la fonction pour qu’elle réponde à sa docstring.
Exercice 2 : 8 points
On considère la fonction suivante et sa docstring:
def recherche_par_nom(nom_jardin):
'''
retourne la liste des jardins contenant le nom_jardin
la liste retournée contient pour chaque jardin trouvé
le nom, l'adresse de l'entrée publique, la commune et la
région
>>> recherche_par_nom('Rocambole')
[{'nom': 'Jardin Rocambole', 'entrée': '112 La Lande aux Pitois, 35150 Corps-Nuds, France', 'ville': 'Corps-Nuds', 'region': 'Bretagne'}]
>>> recherche_par_nom('ROCAMBOLe')
[{'nom': 'Jardin Rocambole', 'entrée': '112 La Lande aux Pitois, 35150 Corps-Nuds, France', 'ville': 'Corps-Nuds', 'region': 'Bretagne'}]
>>>len(recherche_par_nom('botanique'))
19
'''
A vous de la compléter.
Exercice 3 : 4 points
Compléter la fonction suivante :
def plus_anciens():
'''
retourne la liste des jardins ayant obtenus le titre
de jardin remarquable les plus anciens
>>> len(plus_anciens())
117
>>>plus_anciens()[0]["annee_d_obtention"]
'2004'
>>> plus_anciens()[0]["nom_du_jardin"]
"Roseraie de l'abbaye de Chaalis"
'''
proposition de correction
import json
# on ouvre le fichier json effectifs-armentieres
with open('liste-des-jardins-remarquables.json') as mon_fichier:
# on stocke les donnees
donnees = json.load(mon_fichier)
def recherche_par_region(nom_region):
'''
retourne la liste des jardins remarquables dans
la région
recherche_par_region("Occitanie") ou recherche_par_region("occitanie") doivent renvoyer la même liste
>>>len(recherche_par_region("Occitanie"))
43
'''
# on convertit en minuscules le nom de la region
nom_region=nom_region.lower()
# on utilise la variable globale donnees pour eviter de
# la passer en paramètre
global donnees
donnees_retour=[]
# on parcourt les donnees
for jardin in donnees:
# si le nom de la region n'est pas vide
if jardin["region"] !=None:
# on convertit le nom de la region en minuscules
region_jardin=jardin["region"].lower()
# si le nom recherché est dans le nom de la region
if nom_region in region_jardin :
# on ajoute au donnees à retourner le jardin
donnees_retour.append(jardin)
return donnees_retour
def recherche_par_nom(nom_jardin):
nom_jardin=nom_jardin.lower()
global donnees
donnees_retour=[]
# on parcourt les donnees
for jardin in donnees:
if jardin["nom_du_jardin"] !=None:
# on convertit le nom de la region en minuscules
jardin_nom=jardin["nom_du_jardin"].lower()
# si le nom recherché est dans le nom de la region
if nom_jardin in jardin_nom:
# on ajoute au donnees à retourner le jardin
dico={}
dico["nom"]=jardin["nom_du_jardin"]
dico["commune"]=jardin["commune"]
dico["entrée"]=jardin["adresse_de_l_entree_du_public"]
dico["region"]=jardin["region"]
donnees_retour.append(dico)
return donnees_retour