Ajout exo
This commit is contained in:
parent
7488387594
commit
33e5dee88e
98
Chapitre 3 - Modularité/C03_meteo.py
Normal file
98
Chapitre 3 - Modularité/C03_meteo.py
Normal file
|
@ -0,0 +1,98 @@
|
|||
#
|
||||
# Activité 1 du chapitre 3 (p54) : Utiliser des APIs et des modules Python
|
||||
#
|
||||
# Accès au service OpenWeatherMap
|
||||
|
||||
# Mettre ici la clé obtenue par le professeur à partir de ce lien :
|
||||
# https://home.openweathermap.org/users/sign_up
|
||||
# Les élèves peuvent aussi obtenir eux-même une clé (nécessite l'accès à leur mail).
|
||||
cle = '0001aa32345d1df47456f64b45f8170b'
|
||||
|
||||
# -------- Question 1 : Requête explicite à l'API de OpenWeatherMaps
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
def requete(cle, ville):
|
||||
""" Affiche les informations du site OpenWeatherMaps pour une ville """
|
||||
# Interroger le service Web OpenWeatherMap pour la ville donnée
|
||||
reponse = requests.get('https://api.openweathermap.org/data/2.5/weather?q='+ville+'&appid='+cle)
|
||||
# Afficher le dictionnaire obtenu :
|
||||
print(json.dumps(reponse.json(), indent=4))
|
||||
|
||||
### COMPLÉTER ici par un test de la fonction ci-dessus
|
||||
|
||||
# -------- Question 3 : Utilisation du module Python pyowm
|
||||
|
||||
# module OpenWeatherMap à installer par la commande
|
||||
# pip install pyowm
|
||||
# à exécuter dans le terminal ou depuis EduPython
|
||||
from pyowm.owm import OWM
|
||||
|
||||
# Obtenir un accès au site authentifié par la clé
|
||||
owm = OWM(cle)
|
||||
|
||||
def test_api(cle, ville):
|
||||
""" Afficher la météo d'une ville """
|
||||
# Obtenir l'objet 'manager' pour gérer une session avec le site OpenWeatherMaps
|
||||
manager = owm.weather_manager()
|
||||
# Obtenir la météo d'une ville et l'afficher
|
||||
observation = manager.weather_at_place(ville)
|
||||
print(observation.weather.status, observation.weather.temperature('celsius'))
|
||||
|
||||
### COMPLÉTER ici par un test de la fonction ci-dessus
|
||||
|
||||
# -------- Question 4 : Utilisation plus avancée
|
||||
# - accès au registre des villes
|
||||
# - accès aux prévisions à 8 jours
|
||||
|
||||
def previsions(owm, ville, pays):
|
||||
""" Retourne les prévisions météo (temps et température) d'une ville """
|
||||
# Obtenir l'accès au registre des villes
|
||||
reg = owm.city_id_registry()
|
||||
# Obtenir les informations sur la ou les villes de ce nom
|
||||
liste = reg.locations_for(ville, pays)
|
||||
if len(liste) == 0: # ville inconnue
|
||||
print(ville+' inconnue !')
|
||||
return ([], [])
|
||||
# Extraire la latitude et longitude de la première ville de la liste
|
||||
latitude = liste[0].lat
|
||||
longitude = liste[0].lon
|
||||
|
||||
# Obtenir l'objet 'manager' pour gérer une session avec le site OpenWeatherMap
|
||||
manager = owm.weather_manager()
|
||||
# Obtenir les prévisions pour les coordonnées données
|
||||
previsions = manager.one_call(latitude, longitude)
|
||||
|
||||
### COMPLÉTER ici pour créer un tableau des prévisions de températures
|
||||
### et un tableau des prévisions du temps (couvert, ensoleillé, ...)
|
||||
### Ces informations sont dans le tableau previsions.forecast_daily.
|
||||
### Chaque élément de ce tableau correspond aux prévisions d'une journée.
|
||||
### Ces prévisions sont un objet qui contient deux attributs qui nous intéressent :
|
||||
### previsions.forecast_daily[i].temperature('celsius') : température en ºC
|
||||
### previsions.forecast_daily[i].status : météo sous forme de chaine de caractères
|
||||
temperatures = [e.temperature('celsius') for e in previsions.forecast_daily]
|
||||
meteo = [e.status for e in previsions.forecast_daily]
|
||||
|
||||
# retourner les deux tableaux sous forme d'un tuple
|
||||
return temperatures, meteo
|
||||
|
||||
### COMPLÉTER ici pour afficher les prévisions d'au moins deux villes
|
||||
### Le pays est le code sur 2 lettres du pays :
|
||||
### 'FR' pour France, 'GB' pour Grande-Bretagne, etc.
|
||||
|
||||
# -------- Section 2, Question 2 : Afficher les prévisions
|
||||
|
||||
from matplotlib import pyplot
|
||||
|
||||
### COMPLÉTER ici pour afficher les graphes des prévisions de températures.
|
||||
### Utiliser la fonction `previsions` ci-dessus pour obtenir les prévisions.
|
||||
### Utiliser la fonction `pyplot.plot` de la bibliothèque pyplot importée ci-dessus.
|
||||
### On peut appeler `plot` plusieurs fois pour afficher plusieurs graphes
|
||||
### Utiliser la fonction `pyplot.legend` pour afficher la légende avec les noms des villes.
|
||||
### Utiliser la fonction `pyplot.show` pour afficher le graphe,
|
||||
### ou `pyplot.savefig` pour l'enregistrer dans un fichier.
|
||||
|
||||
temperatures, meteo = previsions(owm, 'Paris', 'FR')
|
||||
pyplot.plot(temperatures, meteo)
|
||||
pyplot.show()
|
Loading…
Reference in a new issue