INITIATION au langage Python

Présentation de Python

Le langage Python (source : Eduscol)

Python est un langage de programmation multiplateforme, c’est-à-dire disponible sur plusieurs architectures (compatible PC, tablettes, smartphones, Raspberry …) et systèmes d’exploitation (Windows, Linux, Mac, Android…), il est gratuit, sous licence libre.

Python est utilisé dans le cadre de l’enseignement d’informatique, du secondaire au supérieur, mais aussi pour le développement d’applications professionnelles.

Spécificités

  •  Langage de haut niveau, d’apprentissage aisé.
  •  Langage très utilisé et notamment dans l’enseignement : mathématiques au lycée,CPGE, IUT.
  •  Langage disposant de beaucoup de bibliothèques (accès simplifié au traitement de données).
  • Evolutions constantes assurées par une large communauté de développeurs.

Activités utilisant ce langage

  • Etude énergétique d’un mouvement rectiligne.
  • Dynamique de la chute libre.
  • Stoechiométrie et bilan de matière.

Quels outils pour programmer en Python ?

Python n’est pas un logiciel, il s’agit juste d’un langage !

Pour programmer en Python, nous avons donc besoin d’un logiciel appelé IDE (Environnement de Développement Intégré). On trouvera dans cet IDE deux fenêtres principales : un éditeur (pour taper les programmes) et un interpréteur (pour voir le résultat après exécution du code)

On utilisera ici le logiciel Pyzo.

D’autres IDE sont possibles pour programmer en Python :

  • Edupython  est facile à installer mais peut présenter des problèmes de compatibilité.
  • Spyder (distribution Anaconda) est très complet mais l’installation est lourde. De plus, le programme prend du temps à se lancer …
  • Pyzo  est convivial et adapté à la programmation scientifique. Il faut cependant penser à bien installer les bibliothèques (voir ci dessous).

Installation et fonctionnalités de l’IDE Pyzo

L’installation de Python se fait en plusieurs étapes :

  •  Installation de l’environnement Python
  • Installation du logiciel Pyzo (IDE adapté à la programmation scientifique) et configuration de l’interpréteur (appelé aussi console ou shell en anglais)
  • Installation des bibliothèques dans Pyzo (pour calculs, tracés de courbes, communication avec la carte Arduino,…)

Etape 1 : Installer l’environnement Python

Installer Python en téléchargeant la bonne version (Windows 32 bits, Windows 64 bits, Mac, Linux,..) sur ce lien :

https://www.python.org/downloads/

Choisir Customize installation puis cocher la case All Users dans Advanced Options .

Etape 2 : Installer l’IDE Pyzo

Installer Pyzo en téléchargeant la bonne version (Windows 32 bits, Windows 64 bits, Mac, Linux,..) sur ce lien :


https://pyzo.org/start.html


Vue détaillée du logiciel Pyzo :

Les deux fenêtres principales dans un IDE sont :

  • L’éditeur de script : c’est dans cette fenêtre qu’on écrit le code, il faudra bien penser à sauvegarder régulièrement (Ctrl+S). Pour exécuter le code, le raccourci est Ctrl+shift+E
  • L’interpréteur (ou console/shell) : Le résultat aprés exécution du code s’affiche dans cette fenêtre. Des messages en rouge peuvent apparaître en cas d’erreur…
IDE Pyzo

Etape 3 : Configuration du shell

Ouvrir Pyzo

L’interpréteur indique si un environnement python a été détecté (dans ce cas cliquer sur detect pour valider le choix).
Sinon il faut aller dans le menu Shell > Edit shell configurations, une fenêtre s’ouvre et il faut renseigner la ligne exe avec le bon chemin parmi les choix proposés (Python 3.7).

Pour choisir la langue française : menu Settings > Select language 

Redémarrer Pyzo pour que les changements prennent effet.

Etape 4 : Installation des bibliothèques

Ouvrir Pyzo Dans le shell (qu’on peut faire glisser en haut par commodité), écrire une à une les commandes suivantes et valider à chaque fois (Attention : il faut être connecté à Internet)

  • pip install numpy
  • pip install matplotlib
  • pip install scipy

numpy et scipy sont des bibliothèques pour des calculs scientifiques.
matplotlib contient les fonctions pour tracer des graphiques (avec le module pyplot)

Pour vérifier, écrire dans le shell : import nom de la bibliothèque (par exemple import matplotlib) L’absence de message d’erreur signifie que la bibliothèque est bien installée.

Complément (optionnel) : Pour installer nanpy qui permet de programmer une carte Arduino avec le langage Python

pip install D:\Nanpy_Python.zip

Indiquer chemin du fichier, ici sur la racine d’une clé USB sur le D :

Ce fichier zip est disponible ci dessous :

Nanpy_Python.zip

Vous trouverez des informations sur l’installation et l’utilisation de Nanpy dans l’article suivant :

Programmer-en-python-pour-la-carte-arduino

Première approche de la programmation Python

Dans cet article, nous ne rentrerons pas en détail dans l’apprentissage du langage Python qui est très riche. Le but est de comprendre quelques notions de base qui sont utilisées dans le cadre des nouveaux programmes de physique.

Cet article est largement inspiré par le site Chimsoft qui propose une excellente première approche du langage Python pour la physique-chimie dans ce document PDF PythonLycee.pdf

Les objectifs de cette initiation sont :

  • Ecrire quelques lignes de codes pour faire des calculs simples et afficher les résultats dans la console avec la fonction print.
  • Différencier les types de données intstr et float.
  • Affecter une valeur à une variable.
  • Savoir utiliser la bibliothèque matplotlib pour tracer un graphe à partir d’une série de mesures

Quelques lignes de code pour s’exercer

Ci dessous un tableau de quelques types de données que l’on peut utiliser avec Python :

Type de donnéesNom en python
Nombre entierint
Nombre décimal (flottant)float
Chaîne de caractères (du texte par exemple)str
Liste (pour une série de mesures par exemple)list
Types de données Python


Un programme Python doit être écrit dans la fenêtre d’éditeur de script. Il faut utiliser la fonction print pour qu’un résultat s’affiche dans l’interpréteur.

Première série de tests : Afficher le texte Coucou !

On décide d’afficher un texte, il s’agit donc d’une chaîne de caractères.


Dans Python, il n’est pas tout le temps nécessaire de déclarer les types de variables.
Ici, il suffit d’utiliser les guillemets  » « (ou apostrophes ’ ’) pour que le texte Coucou !
soit reconnu comme une chaîne de caractères (str).


Ecrire ces lignes de codes dans l’éditeur et ensuite les exécuter pour faire apparaître le résultat dans la console (Exécuter/Démarrer le script ou raccourci CTR+SHIFT+E) :

print ("Coucou !") # Faire le test sans les guillemets aussi

texte = "Coucou !" # On peut affecter le texte Coucou ! a une variable nommee texte
# (encore une fois penser aux guillemets pour le contenu du texte)

print (texte)

Deuxième série de tests : Manipuler un nombre entier

Un nombre entier sera reconnu comme un entier sauf si on le met entre guillemets, ça deviendra une chaîne de caractères !
Si on affecte une valeur à une variable x, la valeur est « stockée » dans cette variable.

print (2)
print (2+2) # le resultat apparait dans l ' interpreteur
print("2+2") # pas d'addition car c'est ici une chaine de caracteres !

x=2 # on affecte la valeur à une variable x
print(x) # la valeur de x est affichee
print ("x") # ici ca devient une chaine de caracteres ,
            # ce n'est plus la variable !

x=2
print (x+x) # le resultat apparait dans l ' interpreteur

x=2 
# une maniere plus elegante de presenter les resultats 
print ("x = ",x) # la virgule permet de separer la chaine de
                   # caracteres et la valeur de la variable
x=2
print ("x+x = ",x+x)

Rq : Raccourci pour exécuter seulement une sélection de lignes : ALT+ENTREE

Troisième série de tests : Manipuler un nombre décimal

Même règle pour les nombres décimaux appelés flottants (float) Attention, penser à utiliser un point et non pas la virgule.

print (2 ,5) # avec la virgule , les entiers 2 et 5 sont affiches separement
print (2.5) # avec le point , on recupere bien le nombre decimal 2.5 
print (2.5+2.5) # l 'addition se fait bien
print ("2.5+2.5") # pas d'addition car c'est une chaine de caracteres !


x=2.5 # on affecte la valeur à une variable x
print (x) 

x=2.5
print(x+x) # l 'addition se fait bien

x=2.5 
print ("x = " ,x) # une maniere plus elegante de presenter les resultats
print ("x+x = " ,x+x)

Tracer un graphe avec Python

La bibliothèque matplotlib permet de tracer des courbes dans Python.
Pour importer cette bibliothèque dans un programme Python, il faut taper la ligne de code suivante :

import matplotib.pyplot as plt

Exemple simple de tracé d’une courbe avec matplotlib

# Importation du module pyplot de la bibliotheque permettant le trace de courbes, on attribue un alias plt à ce module.
import matplotlib.pyplot as plt

# Les valeurs des abscisses X et ordonnees Y sont stockees dans des listes : des crochets sont utilises pour delimiter les listes. Les valeurs dans ces listes sont separees par des virgules.
X = [1,2,3,4,5] 
Y = [2,4,6,8,10]

# Permet de placer les points de coordonnees (x,y) en les reliant . Il faut utiliser plt.scatter si on ne veut pas relier les points .
plt.plot (X, Y) # faire l ' essai avec plt.scatter (X,Y)

# Pour nommer l 'axe des abscisses
plt.xlabel ("X")

# Pour nommer l ' axe des ordonnees
plt.ylabel ("Y") #Pour mettre un titre

plt.title (" Exemple de courbe ") 

# Pour afficher le graphique
plt.show()

Mise en application : Loi de Boyle Mariotte

Faire plusieurs mesures de pression P pour différentes mesures de volume d’air V contenu dans une seringue.

Valeurs de pression et de volume

Avec le langage de programmation Python dans Pyzo, tracer le graphique P=f(V) à partir de ces valeurs.

P = f(V)
import matplotlib . pyplot as plt

V= [18,24,30,34,40,50,60]
P = [1139 ,857 ,693 ,610 ,522 ,420 ,352]

plt.plot (V,P) # faire l ' essai avec plt.scatter (X,Y) 

plt.xlabel ("V en mL") 
plt.ylabel ("P en Pa") 

plt.title("P=f(V)") 

plt.show()

Pour aller plus loin : Manipulons les listes !

Fonctions de base :

liste = [ ]crée une liste vide nommée liste
liste.append(« cerises »)ajoute l’element cerises en queue de liste
len(liste)permet de recuperer la longueur de liste (nombre d’elements)
liste[i]l’element d’indice i contenu dans liste.
Fonctions de base pour les listes Attention : l’indice commence à 0 ! ! !

Petits tests pour manipuler une liste :

liste = ["pommes","poires","bananes"]
print ( liste [0]) # 1er element de la liste , indice 0

print (len(liste)) # 3 elements dans la liste

print (liste [3]) # message d'erreur car on est alles trop loin dans la numerotation , l'element d'indice 3 
                   # correspond à l'element de rang 4 qui n'existe pas !
print ( liste [2]) # ici on retrouve bien le troisieme element de la liste

liste.append("cerises")
print ( liste ) # un 4eme element a ete rajoute en queue de liste

La boucle for … in


Pour récupérer successivement les éléments d’une liste, on peut créer une boucle en utilisant la fonction :

for element in liste


! ! ! Deux informations très importantes pour l’écriture d’une boucle ! ! !

  • Ne pas oublier le  :  en fin de première ligne pour démarrer la boucle.
  • Pour différencier ces instructions de la suite du programme, après cette première ligne, on tape en début de boucle une tabulation, avec la touche 

En langage Python, cette indentation (ce décalage) est indispensable !

La fonction in range () dans Python

La fonction in range (valeur début, valeur fin exclue) permet de génèrer une liste de nombres entiers incrémentés de +1 en partant de la valeur de début jusqu’à la valeur de fin (qui est exclue !).
Si on écrit un seul paramêtre, seule la valeur de fin (qui est exclue) est indiquée. Par défaut la valeur de début est 0.

Ecrire ces lignes de codes dans l’éditeur et ensuite les exécuter pour faire apparaître le résultat dans la console (CTR+SHIFT+E) :

a = range(5, 15, 2) # le 15 est exclu, on va de 2 en 2
print (list(a)) # pour afficher sous forme de liste 

for i in range(0,4) :
    print (i) # on voit bien que 4 est exclu de la liste. 
                    #Remarque : penser au decalage (indentation)

for i in range(4) :
    print (i) # idem, la valeur de debut est 0 par defaut

for i in range(1,4) :
    print (i) # on change la valeur de debut

Réaliser des opérations mathématiques sur toutes les valeurs d’une liste

On part ici d’une liste : L= [1,2,3,4]
Pour effectuer une opération mathématique sur les éléments d’une liste (par exemple tout multiplier par 2), il faut :

  • Créer une liste vide, L2 = [ ]
  • Parcourir tous les éléments de la liste L pour appliquer le calcul. La boucle for i in range(len(L)) : permet d’y accéder par l’indice i de chaque élément
  • Dans la boucle, ajouter dans la liste L2 les valeurs calculées en écrivant L2.append(L[i]*2)

Cela peut paraître un peu compliqué mais c’est une technique qui est très courante dans Python pour faire des calculs scientifiques.
C’est en fait une question d’habitude. Au bout d’un certain temps de pratique, on fait ça machinalement … Donc pratiquons pour nous familiariser avec cette méthode !

L = [1,2,3,4] # liste initiale

L2 = [ ] # creation d'une nouvelle liste qui contiendra les doubles

for i in range (len(L)): # boucle pour parcourir les elements de L avec l'indice i
    L2.append (L[i]*2) # pour chaque indice, l'element de L multiplie par 2 est ajoute a la liste L2
		
print (L2) # on sort de la boucle pour afficher le resultat final
---------------------------------------------------------------------------------------------------------
# La methode ci-dessous est plus simple et plus rapide car on ne passe pas 
# par les indices ... mais c'est une mauvaise habitude avec Python ! 
# Il vaut mieux travailler avec les indices de maniere generale.

L = [1,2,3,4] # liste initiale

L2 = [ ] # creation d'une nouvelle liste qui contiendra les doubles

for x in L : # on s'interesse directement aux valeurs des elements de la liste
    L2.append (x*2) # chaque element de la liste L multiplie par 2 
		                 # est ajoute a la liste L2                
                                 
print (L2) # on sort de la boucle pour afficher le resultat final

Mise en application avec la loi de Boyle Mariotte :

A partir des mesures de P et de V effectuées précédemment, on souhaiterait mettre en évidence la loi de Boyle-Marotte :

Loi de Boyle-Mariotte

A température constante et pour une quantité de matière donnée de gaz : PxV =cste

Exercice : Calculer les valeurs de P x V avec Python en parcourant les listes de valeurs de P et de V (grâce aux indices).

Il faudrait donc utiliser la méthode for i …in range (len()) : pour créer une nouvelle liste de valeurs calculées, qu’on appellera PV.

On pourrait aussi tracer avec matplotlib un nouveau graphe représentant PV en fonction de V.

import matplotlib.pyplot as plt

V = [18,24,30,34,40,50,60]
P = [1139,857,693,610,522,420,352]

PV = [ ] # creation d'une liste vide

# calcul de PV a partir des differentes valeurs de P et de V
for i in range (len(V)):             
    PV.append(P[i]*V[i]) 

print ('Produit PxV :',PV)

plt.plot(V,PV) # faire l'essai avec plt.scatter(X,Y)

plt.xlabel ("V en mL")

plt.ylabel ("PxV en Pa.mL")

plt.ylim (0,25000) # on definit des limites pour l'axe des ordonnees

plt.title (" PxV=f(V)")

plt.show()

Laisser un commentaire