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
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()
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
with open('jardins.json') as json_data:
donnees = json.load(json_data)
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()
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):
'''
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
'''
nom_jardin=nom_jardin.lower()
donnees_retour=[]
for jardin in donnees:
if jardin['nom_du_jardin'] !=None:
jardin_nom=jardin['nom_du_jardin'].lower()
if nom_jardin in jardin_nom:
jardin_retour={}
jardin_retour['nom_du_jardin']=jardin['nom_du_jardin']
jardin_retour['commune']=jardin['commune']
jardin_retour['adresse_de_l_entree_du_public']=jardin['adresse_de_l_entree_du_public']
jardin_retour['region']=jardin['region']
donnees_retour.append(jardin_retour)
return donnees_retour
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"
'''
annee_min=donnees[0]['annee_d_obtention']
for jardin in donnees:
if jardin['annee_d_obtention']<annee_min:
annee_min=jardin['annee_d_obtention']
retour=[]
for jardin in donnees:
if jardin['annee_d_obtention']==annee_min:
retour.append(jardin)
return retour