Pourquoi Python ?

Avantages pour les scientifiques

  • Facile à installer, libre et multi-plateformes (Linux, Windows, macOS)
  • Prise en main très rapide (quelques jours)
  • Alternative fiable à des logiciels spécialisés (matlab, excel, libreOffice...)
  • Spécialisé dans le calcul scientifique, la représentation des données sous forme de graphiques et la simulation
  • Python est un des langages les plus populaires d'après L’Institute of Electrical and Electronics Engineers (IEEE) qui est la plus grande association mondiale de professionnels techniques (http://spectrum.ieee.org/computing/software/the-2017-top-programming-languages)

Avantages pour les élèves

  • Un document ressources de l'éducation nationale mentionnant clairement Python, vient de paraître pour la rentrée 2017 sur le thème algorithmique et programmation (https://cache.media.eduscol.education.fr/file/Mathematiques/73/3/Algorithmique_et_programmation_787733.pdf)
  • Python est très majoritairement utilisé dans l'enseignement de spécialité ISN en terminales S.
  • Python est un enseignement obligatoire en C.P.G.E depuis la rentrée 2013
  • C'est une épreuve obligatoire des concours aux grandes écoles que ce soit sous forme d'une épreuve de simulation pour la physique - chimie (Concours communs polytechniques et e3a) ou d'une épreuve d'informatique pour tous plus théorique (Centrale-Supélec et Mines-Ponts)

Installation de Python

Environnement de programmation

Pour faire très simple, un éditeur de texte, permettant d'écrire et d'interpréter du code Python (et bien plus...). Pour cela nous allons utiliser le Jupyter Notebook. Jupyter est une application web utilisée pour programmer dans plus de 40 langages de programmation. Jupyter permet de réaliser des notebooks, c'est-à-dire des feuilles et dans certains cas des pages WEB contenant à la fois des programmes, du texte (aide à la rédaction du texte : https://fr.wikipedia.org/wiki/Markdown), du code Python et pour les connaisseurs vous pourrez même insérer du code $\LaTeX$ pour rédiger de belles équations. Ces notebooks sont très utilisés en science pour explorer, analyser et présenter des données. Exemple de notebook pour le test d'un capteur infrarouge : http://laphysiquedepapa.free.fr/projet2017/capteurIR_sharp.html

Utilisation du Jupyter Notebook

Pas de panique le Jupyter Notebook est présent dans la distribution Anaconda que vous venez d'installer. Si vous avez optez pour la version Anaconda Navigator (qui est la version par défaut), il ne reste plus qu'à lancer le Notebook avec le bouton Launch. Cette version a l'avantage (tout est relatif) d'offrir un bureau des applications disponibles avec Anaconda. Mais il est toujours possible de supprimer ce bureau pour lancer les applications directement depuis une console.

La documentation officielle : https://docs.anaconda.com/anaconda/navigator/

Voici un petit guide pour en savoir un peu plus sur le notebook : https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/.

Documentation officielle complète du Notebook : http://ipython.org/ipython-doc/dev/notebook/index.html

Un notebook en ligne qui devrait être largement suffisant pour le lycée et les C.P.G.E: https://try.jupyter.org/

Un autre environnement de programmation pour Python : https://repl.it/languages/python3

Description sommaire de l'interface web du notebook

  1. Fermer un notebook
  2. Effacer un notebook
  3. Dossier parent
  4. Liste des notebook, cocher pour sélectionner un notebook
  5. Charger un notebook
  6. Créer un nouveau notebook avec Python 2 ou 3 suivant les versions

  1. Clic gauche pour changer le titre (Untitled) du notebook.
  2. Sauvegarder le notebook
  3. Cellule du notebook
  4. Zone de code python
  5. Exécuter le code d'une cellule (ou en appuyant simultanément sur les touches : shift + enter)
  6. Stopper l'exécution du code
  7. Sélection du type de contenu dans la cellule en cours.

L'auto-complétion

Lorsque vous commencez à saisir un nom connu de l'interpréteur, l'appui sur la touche [TAB] complète le nom automatiquement. Si plusieurs noms sont possibles un menu contextuel vous propose de choisir. Ceci économise de la frappe tout en évitant les erreurs d'orthographe dans les noms des variables.

Les commandes magiques de IPython

Une liste non exhaustives mais les plus utiles pour démarrer.

%mathplotlib inline : L'option inline indique que les figures Matplotlib seront insérées dans le notebook lui-même plutôt que dans une fenêtre graphique à part.

%%writefile : Transforme le contenu de la cellule en un fichier texte avec l'extension indiquée dans le répertoire courant de travail.

In [1]:
%%writefile nbDiv.py

#Exemple de script

def divise(p, n):
    return n % p == 0

def nbDiviseurs(n):
    compt = 0
    for i in range(1, n+1):
        if divise(i, n):
            compt += 1
    return compt
Overwriting nbDiv.py

%less : Cette commande permet de visualiser le contenu d'un fichier de texte. Par défaut le contenu s'affiche dans une nouvelle fenêtre.

In [ ]:
%less nbDiv.py

%run : La commande %run nbDiv exécute le script python nbDiv.py. À la fin de l'exécution du script tous les objets (une chaîne de caractères, un entier, un dictionnaire, une liste, une fonction...) définis dans le script sont insérés dans l'espace de nom global de l'interpréteur.

In [2]:
%run nbDiv
nbDiviseurs(1234)
Out[2]:
4

%time et %timeit : Mesure le temps d'exécution d'une instruction ou d'une expression. Le code est exécuté plusieurs fois et le temps moyen d'exécution est affiché.

In [3]:
%time nbDiviseurs(12345678)
CPU times: user 4.42 s, sys: 80 ms, total: 4.5 s
Wall time: 4.47 s
Out[3]:
24

Remarque : Cet algorithme pour calculer le nombre de diviseurs d'un entier est vraiment mauvais....

In [ ]:
%timeit nbDiviseurs(123456)

%whos : Affiche les objets qui sont actuellement définis dans l'interpréteur Python, très pratique quand le nombre de cellules devient important ou que le code s'allonge, cela évite de tout relire.

In [ ]:
%whos

Raccourcis clavier pour le Notebook

Shortcut Action
Shift-Enter run cell
Ctrl-Enter run cell in-place
Alt-Enter run cell, insert below
Ctrl-m x cut cell
Ctrl-m c copy cell
Ctrl-m v paste cell
Ctrl-m d delete cell
Ctrl-m z undo last cell deletion
Ctrl-m – split cell
Ctrl-m a insert cell above
Ctrl-m b insert cell below
Ctrl-m o toggle output
Ctrl-m O toggle output scroll
Ctrl-m l toggle line numbers
Ctrl-m s save notebook
Ctrl-m j move cell down
Ctrl-m k move cell up
Ctrl-m y code cell
Ctrl-m m markdown cell
Ctrl-m t raw cell
Ctrl-m 1-6 heading 1-6 cell
Ctrl-m p select previous
Ctrl-m n select next
Ctrl-m i interrupt kernel
Ctrl-m . restart kernel
Ctrl-m h show keyboard shortcuts
In [2]:
import time
print(time.strftime("Version du "+'%d/%m/%y %H:%M',time.localtime()))
Version du 03/09/18 08:39

Christophe Casseau mail : isncaju@gmail.com