1.3. Utilisation de Python

Il existe plusieurs façons d’exécuter un code Python. On peut lancer un interpréteur dans une console, ce qui permet d’exécuter les instructions ligne par ligne. On peut aussi écrire le script dans un ficher que l’on exécute. Enfin, il existe des solutions intermédiaires avec lesquels on utilise à la foi un fichier et une console.

1.3.1. Console Python

La console Python se lance simplement à partir du programme python. Sous windows, on peut ouvrir un terminal depuis le menu Anaconda.

La console Python peut être utilisée comme une simple calculatrice :

>>> 1+13
14

On peut aussi y entrer des structures plus complexes directement :

>>> l = ['alpha', 'beta']
>>> for elm in l:
...     print(elm)
...
alpha
beta

1.3.2. Console IPython

La console IPython est beaucoup plus pratique à utiliser que la console Python. Elle remplace de fait la console standard. La page <https://ipython.org/ipython-doc/2/interactive/tutorial.html> indique les principales fonctions de IPython. Notons :

  • Une console qui permet d’accéder au commandes précédentes (en utilisant la flèche du haut). Il est possible de limiter la recherche en commençant à taper les premiers caractères de la lignes que l’on veut retrouver

  • La complétion automatique à l’aide de la touche de tabulation.

    In [1]: une_variable_dont_le_nom_est_long = 3.2
    

    On pourra ensuite simplement taper quelques lettres (par exemple une_va) puis la touche de tabulation. Si plusieurs choix sont possibles, ils s’afficheront. Ceci est valable pour les noms de variables (donc aussi pour les fonctions), mais aussi les attributs ou méthodes des objets.

  • Les commandes magiques. Sera utilisé particulièrement la commande %run qui permet d’exécuter un fichier.

1.3.3. Utilisation d’un fichier

Dès que l’on veut exécuter plus que quelques instructions, il est préférable d’utiliser un fichier. Les fichiers contenant des instructions python ont comme extension .py. Écrivons à l’aide d’un éditeur de texte standard les quelques instructions suivantes :

nom = 'Pierre'
print('Bonjour', nom, '!')

Ce fichier peut être exécuté directement à partir d’un shell à l’aide de l’instruction python nom_de_fichier.py. Normalement, ce programme devrait afficher :

Bonjour Pierre !

1.3.4. Spyder

Spyder offre un environnement de travail pour Python qui se veut un clone de celui de Matlab. Il est donc adapté à l’utilisation pour les scientifiques. En ouvrant ce programme, on a d’un côté un éditeur de texte et de l’autre un fenêtre d’aide et une console IPython. Nous recommandons l’utilisation de cet environnement.

Exemple : lancer spyder et ouvrir le fichier créé précédemment. Exécuter le contenu de ce fichier (à partir des menus ou directement avec la touche F5).

1.3.5. Jupyter Notebook

Le jupyter notebook offre un environnement dans lequel on peut afficher à la foi les instructions (regroupés dans dans des cellules) et les résultats de ces instructions au fur et a mesure de leur exécutions. Il est par exemple possible d’afficher des graphiques. Cet environnement est particulièrement intéressant lorsque l’on veut pouvoir présenter directement des résultats (par exemple pour un TP, ou une simulation).

Jupyter se présente sous la forme d’un serveur http auquel on accède avec un navigateur web. Sous linux, lancer simplement le notebook à partir d’un terminal à l’aide de la commande

jupyter notebook

Normalement, le navigateur par défaut devrait s’ouvrir.

Sous windows, il existe un lien depuis le menu anaconda.

1.3.6. Exemple

Voici un premier exemple de code Python. L’objectif de ce code est de calculer la valeur de \(e^x\). Nous allons utiliser le développement limité suivant:

\[e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!}\]

Pour cela, nous allons calculer la somme jusqu’à une valeur \(n_\mathrm{max}\) de \(n\) telle que \(x^n/n!<\epsilon\). La variable \(\epsilon\) déterminera la précision du calcul (plus \(\epsilon\) est petit, meilleure est la précision).

Le code Python permettant de faire ce calcul est le suivant :

x = 3.14
epsilon = 1E-6
resultat = 0
n = 1
terme = 1 # Valeur initiale de terme de la boucle
while terme>epsilon :
    resultat = resultat + terme
    terme  = terme * x/n
    n = n + 1
print(resultat)

Ce code ne devrait pas poser de problème au lecteur ayant déjà eu des cours de programmation. Une particularité du langage Python est présente : dans la boucle while, le bloc d’instruction qui est répété est déterminé par l’indentation (espaces au début de chaque ligne). Python est donc différent de la pluspart des langages qui utilisent une structure du type begin-end ou bien des accolades pour déterminer le bloc d’instruction qui est répété. En python un bloc d’instruction est repéré par les : et un ensemble de lignes indenté identiquement.

Pour effectuer l’indentation d’une ligne ou d’un bloc de ligne, le plus simple est d’utiliser la touche de tabulation (et shift + tabulation) pour supprimer l’indentation.

Exercice

Essayez d’exécuter ce code en utilisant les différentes méthodes proposées ci dessus :

  • En recopiant le script dans un fichier exponentielle.py et en l’exécutant avec la commande python exponentielle.py
  • En utilisant ipython
  • En utilisant spyder
  • En utilisant un notebook jupyter.

Pour créer une fonction, on utilise l’instruction def, ce qui donne :

def exp(x, epsilon=1e-6): # epsilon vaut par défaut 1e-6
    """ Renvoie e a la puissance x """
    resultat = 0
    n = 1
    terme = 1 # Valeur initiale du terme de la boucle
    while terme>epsilon :
        resultat = resultat + terme
        terme = terme * x/n
        n = n + 1
    return resultat

Exercice

Depuis un éditeur (par exemple spyder), modifiez le fichier pour en faire une fonction. Exécutez le fichier et la fonction.