N.B. Niveau : Terminale Générale, enseignement de spécialité NSI (Numérique et Sciences Informatiques)
Lorsqu'on réalise un projet de programmation de grande ampleur, ou que l'on travaille en équipe, il est d'usage de découper le programme en plusieurs parties ayant chacune un rôle propre. On peut par exemple dans un jeu séparer ce qui concerne le traitement des données du jeu de ce qui concerne l'affichage graphique de ces données. Chaque partie est alors stockée dans un fichier, que l'on appelle module. Un module est indépendant, et peut être réutilisé dans n'importe quel programme.
Définition
Un module est un fichier de code qui peut contenir des constantes, des classes, des fonctions...
Exemples :
Il existe de très nombreux modules en Python, comme le module math (fonctions mathématiques) et le module random (pseudo-aléatoire).
Un module est un fichier de code comme un autre. En Python, pour faire un module il suffit
simplement de faire un fichier portant l'extension .py
.
Une API (Application Pgramming Interface) permet aux développeurs d'intégrer une application à une autre. Cela peut permettre par exemple de récupérer des données structurées depuis un site web pour les exploiter de manière automatisée dans un programme.
Rappel
Pour utiliser un module en Python, il faut commencer par l'importer en mémoire. Par exemple on peut utiliser la fonction randint du module random grâce l'une des instruction suivantes :
ou
Lorsqu'on utilise plusieurs modules, ou lorsque le programme est assez long, la première méthode est recommandée, car même si elle alourdit le programme, elle permet de bien voir de quel module provient chaque fonction utilisée.
Dans toute cette séquence, nous allons donc utiliser la première méthode.
Remarque :
L'interaction avec un module se fait grâce à une interface, qui est une énumération des fonctions définies dans le modules et destinées à être utilisée par le programme tiers. Cette interface permet d'utiliser un module sans avoir à accéder à son code.
En Python, pour obtenir l'interface d'un module, on utilise dans la console l'instruction
help("nom du module")
. On pourra tester par exemple help("random")
Si le module permet d'interagir avec un système tiers, on parle d'API.
Définition
Une API (Application Programming Interface) est un ensemble normalisé de classes, méthodes, fonctions et constantes qui permet à un système informatique d'interagir avec un autre système informatique.
exemples
L'objectif de cette séquence est de s'entraîner à utiliser des modules et à créer des modules.
Nous cherchons à récupérer dans un programme python la température et à l'afficher. Pour cela, nous allons utiliser une API existante.
Nous allons utiliser les services d'openweathermap. Si vous vous rendez sur le site, vous voyez bien les informations qui nous intéressent mais sous cette forme, nous ne pouvons pas les exploiter facilement. Si vous cliquez sur l'onglet API, vous verrez tout ce que le site propose comme API. Certaines sont gratuites d'accès, d'autres payantes Dans tous les cas, pour en bénéficier, il faudra créer un compte sur le site. Pour découvrir le principe de l'utilisation de ces API, nous n'aurons pas besoin de compte car une API de démonstration suffit pour tester notre programme. Libre à vous si vous souhaitez travailler sur des données réelles et actualises de créer un compte.
Nous utiliserons dans cet exemple l'API Current weather data.
On accède à une API via une URL fournie par le site. Un exemple d'une telle URL est : https://samples.openweathermap.org/data/2.5/weather?q=London&appid=b6907d289e10d714a6e88b30761fae22
Cette URL contient plusieurs paramètres
Si vous ouvrez cette URL avec Firefox, ce dernier va les présenter de manière lisible. En réalité, le fichier qui est envoyé via cette URL est un fichier au format json qui ressemble à une structure de dictionnaire avec des associations clé-valeur :
Grâce au module requests
, Python peut récupérer les données au format json et les intégrer dans un dictionnaire.
Voici un programme basique permettant de récupérer et afficher quelques informations :
Copiez puis collez ce code dans Edupython, sauvegardez le fichier sous meteo.py
, puis testez-le
Pour récupérer la température on exécute la ligne suivante :
>>> print (weather['main'])
En effet, notre dictionnaire sous la clé 'main'
renvoie un nouveau dictionnaire.
Remarque : les températures sont affichées en Kelvin. Pour les convertir en °C on applique la formule suivante : T°C = T°K - 273.15
Ecrire une fonction temperature
qui prend en paramètre le nom de la ville et retourne la température en degrés celsius arrondi au dixième de degré. Commencer par mettre une documentation (docstring)0.
En utilisant l'url ci-dessous, on récupère les prévisions météo pour les 5 jours à venir toutes les 3 heures.
Ecrire une fonction prevision
qui prend en paramètre le nom de la ville et qui retourne une liste contenant les dictionnaires des 5 jours à venir dont les clés sont date
et temps.
Exemple :
[ {'date': '2023-03-10 21:00:00', 'temps': 'light rain'}, {'date': '2023-03-11 00:00:00', 'temps': 'light rain'}, {'date': '2023-03-11 03:00:00', 'temps': 'light snow'}, ... ]
Collez votre fonction ci-dessous :
Créer un nouveau script contenant le code import meteo
, que vous allez enregistrer dans le même dossier que meteo.py
.
Exécutez le code;
Dans la console python tapez :
>>> help(meteo)
Vous devriez voir vos fonctions et vos documentations.
Exécuter dans la console :
>>> help(meteo.temperature)
Ecrire un programme qui demande d'entrer la nom d'une ville et qui affiche par exemple le résultat suivant :
Choisir une ville : Mulhouse Clouds , température : 11.9 °C
Créer un dictionnaire french_weather qui permettra d'afficher le temps qu'il fait en français.
Exemple :
Choisir une ville : Mulhouse Nuageux , température : 11.9 °C
Ce dictionnaire sera enrichi au fur et à mesure du TP.
On souhaite afficher les prévisions des 24 heures à venir, par exemple :
Dimanche 12H pluie faible Dimanche 15H pluie faible Dimanche 18H nuageux Dimanche 21H très nuageux Lundi 0H très nuageux Lundi 3H très nuageux Lundi 6H très nuageux Lundi 9H très nuageux
Il va falloir extraire le jour de la semaine (type int
), le transformer en chaine de caractère. Extraire ensuite l'heure de la date et afficher le temps.
Inscrire dans la console le code suivant et valider :
>>> help(time.strptime)
Repérer les codes des formats pour l'année, le mois, le jour, l'heure, les minutes et les secondes.
Dans la date suivante : 2023-03-11 03:00:00
le séparateur année mois et jour est "-"
, pour l'heure c'est ":"
et le séparateur entre la date et l'heure : ' '
.
La méthode strptime
du module time
prend en paramètre une chaine de caractères (la date) et les codes de formats entre-coupés par les séparateurs.
Dans la console Pyton exécuter la ligne suivante :
time.strptime("2023-03-11 03:00:00","%?-%?...")
L'exécution doit retourner les attributs de l'objet time
suivants :
time.struct_time(tm_year=2023, tm_mon=3, tm_mday=11, tm_hour=3, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=70, tm_isdst=-1)
Si on mémorise ce que nous retourne cette méthode dans une variable date par exemple, on pourra facilement accéder aux différents attributs.
collez le module meteo.py ci-dessous :
collez votre programme ci-dessous :
Fond : Texte : Tables : Thème Python:
Contenu sous licence CC BY-NC-SA 3.0
Amandine SCHRECK (Cours) & Pascal HASSENFORDER (TP)
MAJ : 12/03/2023