Utilisation de bibliothèques

Langages et programmation

Plan

Introduction

Lorsque vous lancez python, il ne charge que le minimum. Pour ajouter des fonctionnalités à Python, on importe des modules. Python contient de nombreux modules dans sa bibliothèque standard, c'est à dire des modules qui sont disponibles juste en les appelant et sans les télécharger sur le web.

Parfois les bibliothèques standard ne nous suffisent pas et on espère que quelqu'un aura créé une bibliothèque contenant des fonctions qui vont nous faciliter la vie! Par exemple de la reconnaissance de visage sur une image, piloter la capture d'une webcam simplement,...

L'installation des bibliothèques tierces se fait avec la commande pip en ligne de commande ou directement dans les environnements de travail comme par exemple dans pycharm

Quelques modules standards

Les modules sont importés en tout début de programme avec la commande import. On peut choisir d'importer toute la bibliothèque ou juste les commandes dont on va se servir. Forcément la deuxième méthode consomme moins de ressources et est préférable si l'on n'utilise que peu de commandes.

Nous allons, plus loin, importer uniquement la fonction randint (qui génére un nombre aléatoire) du module random et tout le module tkinter qui permet de réaliser facilement des interfaces graphiques, ainsi que le module math

Dans l'exemple ci-dessous, on importe uniquement la fonction randint du module random. La fonction randint(a,b) retourne un entier entre a et b compris.

from random import randint

print(randint(0,10))

Ci dessous, on prépare le module math. Du coup, pour chaque utilisation on doit mettre "math.nom_de_la_fonction". Cela peut paraitre contraignant car il faut taper math, à chaque fois....mais évite des soucis si l'on utilise plusieurs modules qui pourraient donc contenir des fonctions de même nom. C'est donc la méthode la plus prudente !

import math

print(math.cos(math.pi/2))

Regardez la différence avec le code suivant. Dans ce qui précède je dois préciser le nom du module suivi d'un point et de la méthode utilisée (c'est la notation orientée objet: j'utilise la methode cos de l'objet math). Ci dessous, c'est inutile, on a importé toutes les fonctions de math. Pratique mais plus gourmand en mémoire. On a utilisé math.pi et math.cos .

from math import *

print(cos(pi/2))

Et voici une méthode qui permet de changer le nom à taper pour utiliser les fonctions de la bibliothèque. Si on n'aime pas l'anglais par exemple!

import random as aleatoire

print(aleatoire.randint(0,10))

Voici un code avec quelques fonctions simples sur tkinter.

from tkinter import *

fenetre=Tk()
etiquette=Label(fenetre,text="ma première fenêtre")
etiquette.pack()
# bouton de sortie
bouton=Button(fenetre, text="Fermer", command=fenetre.destroy)
bouton.pack()

#canvas: zone de dessin
canvas = Canvas(fenetre, width=200, height=200, background='green')
ligne1 = canvas.create_line(0, 0, 200, 200)
oval = canvas.create_oval(50, 50, 150, 150)
txt = canvas.create_text(100, 100, text="Centre", font="Arial 16 italic", fill="blue")
canvas.pack()

fenetre.mainloop()

Il va falloir vous familiariser avec la lecture des documentations des bibliothèques. Celle de tkinter en français (pour une fois). Parfois on trouve des documentations simplifiées et plus claires .

Etude d'une bibliothèque intégrée: Turtle

Turtle est l'adaptation python de la tortue LOGO crée dans les années 60 au Massachusetts Institute of Technology (MIT). La tortue logo est en fait un stylo. On peut relever ou baisser le stylo, faire des portions de cercle, etc....bref, la tortue logo sert à dessiner.

Comme pour toutes les bibliothèques, elle propose de nombreuses fonctions. Pour les découvrir, vous allez devoir lire tout seul la doc en anglais.

Je vous conseille de faire une fiche rapide des principales fonctions!

Faites ensuite les exercices sur turtle, en bas de cette page.

Bibliothèque tierces: matplotlib

Cette bibliothèque très intéressante permet de représenter des courbes,des points dans un repère. Voici sa doc.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)

Bibliothèque tierces: OpenCV

Attention avec les bibliothèques tierces, elles ne sont pas toujours à jour avec les nouvelles versions de Python!

OpenCV est une bibliothèque très puissante sur le traitement d'image. il permet d'importer, capturer, afficher des images, convertir les formats de couleurs, faire du tracking (suivre un objet), modifier des images, trouver des contours etc...

La doc officielle tout en anglais...demande un certain investissement mais au vu des possibilités proposées, cela sera bien plus simple que de coder par vous même ce qui est proposé !

Exercices

  1. a)Amusez-vous, tracez des segments, des cercles, arcs de cercles, des figures pleines, changez l'épaisseur du stylo, la couleur du stylo.
    b) Tracer un cercle de rayon 100, de couleur intérieure rouge et le bord en vert.
    c) Tracer un carré de côté 100.

  2. Fabriquons nos propres outils!
    a)Ecrire une fonction rectangle qui trace un rectangle de côtés l et L. Cette fonction retourne aussi le périmétre et l'aire. Si vous savez comment faire, mettre aussi un paramètre pour l'inclinaison du rectangle par rapport à l'horizontale.
    b)Ecrire une fonction carre qui trace un carré de côté c. Si vous savez comment faire, mettre aussi un paramètre pour l'inclinaison du rectangle par rapport à l'horizontale.
    c)Ecrire une fonction triangle équilatéral qui trace un triangle de côté c, dont le premier côté fait un angle 'a' avec l'horizontale.
    d)Tracer un quadrillage de 10 sur 10.
    e)Ecrire une fonction qui trace des polygones (sans utiliser circle) dont on donne la mesure d'un côté et le nombre de côtés. En déduire une nouvelle fonction pour le carré.

  3. Fabriquons nos propres outils!
    a)Ecrire une fonction camembert qui trace un secteur angulaire, d'angle a, de rayon r, et rempli d'une couleur aux paramètres c1,c2,c3.
    b) Tracer une fonction qui trace le diagramme circulaire pour 4 valeurs v1,v2,v3,v4.

Android

De la programmation pour pc à la programmation pour téléphone.

A finir

Pas eu le temps de tout faire.....