Demarrer Python

publicité
CPES 1re année
2016-2017
PSL
Informatique
Premiers pas en Python
Notes préparées par V. Gabrel, E. Lazard, M. Manouvrier et C. Murat 1
Plan du cours
1. Algorithmes et programmation : principaux concepts
(a) Résoudre un problème
(b) Programmer
(c) Modèle d’ordinateur
(d) Langages informatiques
(e) Erreurs
2. Valeurs, types et variables
3. Instructions élémentaires : affectation, lecture et écriture
4. Instructions conditionnelles et expressions logiques
5. Instructions répétitives
6. Structures de données séquentielles : chaines de caractères et listes (piles et files)
7. Utilisation de modules externes (math, numpy, matplotlib...)
8. Définition et appels de fonction : Passage des paramètres par valeur, Portée des variables
en Python, La récursivité
9. Analyse d’algorithmes et notions de complexité : Définition, ordre de grandeur (linéaire,
exponentielle, logarithmique).
10. Algorithmes de recherche : recherche séquentielle, recherche dichotomique, recherche
par hachage.
1
Présentation de Python
Python est un langage de haut niveau généraliste dont le développement a été initié en 1989
par Guido Van Rossum, qui continue encore de nos jours à travailler sur Python avec l’aide de
très nombreux contributeurs bénévoles formant une partie de la « communauté Python ». Il est
particulièrement bien adapté à l’apprentissage de la programmation car ses constructions syntaxiques sont simples et lisibles, tout en restant relativement puissantes.
1. Cours également dispensé en 1ère année de licence Mathématique-Informatique-Économie (MIE) à l’Université Paris-Dauphine
1
Python étant un langage interprété, il faut disposer sur la machine d’un interpréteur, c’est-àdire du programme capable d’exécuter les instructions Python. Une fois ce dernier installé (voir
section 4.1), on peut lui faire exécuter des instructions une par une (on parle alors de travail
interactif avec l’interpréteur de commandes) ou plus souvent lui faire exécuter un fichier contenant un programme Python complet sous la forme d’un simple fichier texte dont l’extension est
".py".
L’interpréteur peut être utilisé seul en le lançant depuis un terminal 2 et en saisissant les programmes dans un éditeur de texte séparé, soit via un environnement de développement intégré
qui regroupe, au sein de la même interface, un éditeur de texte et un interpréteur de commandes.
IDLE (fourni automatiquement avec l’installation de l’interpréteur Python) et Pyzo (anciennement IEP) sont deux exemples d’environnement de développement que nous allons détailler
ci-après.
En raison de sa constante évolution, il existe plusieurs versions du langage Python. La version 2 (et sa dernière déclinaison, la version 2.7) a longtemps été la plus diffusée et utilisée, et
on trouve encore de nombreux codes qui se conforment à cette syntaxe. Dans le but d’éliminer des faiblesses du langage, Python 3 a officiellement été lancée en 2008 et est rapidement
devenue le « standard » Python, maintenant en version 3.5. Il y a des différences syntaxiques
et sémantiques entre les versions 2 et 3 de Python qui introduisent une incompatibilité entre
les deux : un programme écrit pour un interpréteur Python 2 sera initialement rejeté par un
interpréteur Python 3 et devra être repris et modifié. Il est donc important de se fixer sur une
version du langage et d’utiliser les outils correspondants. Dans ce cours, nous avons choisi de
nous conformer à la syntaxe de Python 3. Il est toujours possible d’installer les deux versions
de l’interpréteur ce qui permet de récupérer et d’exécuter du code Python 2.
2
Pyzo sous linux
Il existe de nombreux environnements de développement pour Python permettant d’exécuter facilement des commandes directement dans l’interpréteur ou d’exécuter un fichier tout en
ayant ce dernier à l’écran pour pouvoir le modifier. Les machines sont équipées de l’environnement Pyzo (www.pyzo.org), voir section 4.3 (anciennement IEP).
Afin de lancer l’environnement Pyzo, il est nécessaire de demander au système de le trouver.
Pour ce faire, il suffit de lancer une recherche en cliquant sur l’icône d’exploration et de taper
pyzo dans le champ de recherche. Le système nous propose alors tous les fichiers dont le nom
correspond et l’icône du programme pyzo est la première ; un clic dessus démarre l’application.
Interface
L’interface par défaut de l’outil Pyzo est composée de quatre parties (voir figure 1) : l’interpréteur de commandes en ligne (en haut de l’interface), une fenêtre en bas à gauche pour entrer
un programme complet, le sauvegarder et l’exécuter (un onglet par programme), un gestionnaire
de fichiers (pour par exemple aller ouvrir un programme - en bas à droite) et au milieu en bas,
un schéma de la structure du programme (inutile pour l’instant).
2. Le terminal (encore appelé console ou shell) est un programme qui ouvre une fenêtre qui permet de communiquer (de lancer des commandes) en mode texte avec le système de l’ordinateur.
2
F IGURE 1 – Interface Pyzo
On peut se servir de Pyzo pour taper des commandes dans l’interpréteur (fenêtre du haut),
commandes qui sont alors immédiatement exécutées (voir figure 2). Dans l’interpréteur, le symbole >>> correspond au signal d’invite, ou prompt principal, lequel vous indique que Python
est prêt à exécuter une commande (que l’utilisateur va saisir). Les lignes non précédées de ce
symbole correspondent à l’affichage d’un résultat. Après avoir saisi chaque instruction, il suffit
de taper sur la touche Enter pour que la commande soit exécutée (c’est-à-dire interprétée).
Pour quitter l’interpréteur de commandes, il faut taper l’instruction exit() ou quit().
F IGURE 2 – Exécution de commandes dans l’interpréteur
On peut aussi taper un programme dans un fichier (fenêtre de gauche), le sauvegarder et
l’exécuter en choisissant le sous-menu Exécuter le fichier du menu Exécuter (ou avec le raccourci Ctrl-E), voir figure 3. Le programme s’exécute alors dans l’interpréteur du haut.
3
F IGURE 3 – Exécution d’un programme avec IEP.
Les boutons situés au-dessus de la fenêtre de l’interpréteur servent à interrompre ou redémarrer ce dernier, ce qui peut s’avérer utile lorsqu’un programme est bloqué, par exemple en
raison d’une boucle infinie (voir figure 4).
Effacer l’écran
de l’interpréteur
Interrompre
l’exécution
Redémarrer
l’interpréteur
F IGURE 4 – Gestion de l’interpréteur.
4
Gestionnaire de fichiers
Le gestionnaire de fichiers permet de naviguer dans l’arborescence afin d’ouvrir facilement
un fichier Python (voir figure 5).
F IGURE 5 – Le gestionnaire de fichiers.
Au lancement, le répertoire courant affiché est votre dossier personnel. Supposons que vous
ayez créé un répertoire Python dans votre dossier Documents ; il est alors facile de se positionner dessus en cliquant sur les répertoires Documents puis Python (voir figure 6).
F IGURE 6 – Navigation.
On peut alors ouvrir un programme déjà présent simplement ou double-cliquant son nom ;
un nouvel onglet s’ouvre avec le source du programme.
Si on veut créer un nouveau programme, on peut soit démarrer un onglet vide (menu fichier
puis nouveau), soit ouvrir un programme existant et le sauvegarder sous un autre nom. On
prendra bien soin, dans la fenêtre de sauvegarde, de se positionner dans le répertoire Python
choisi.
On peut avoir plusieurs programmes ouverts dans la partie gauche de la fenêtre : chaque
onglet va correspondre à un programme Python que l’on peut ouvrir à partir du gestionnaire de
fichiers situé dans la partie en bas à droite (figure 7). Pour exécuter un de ces programmes, il
suffit de cliquer sur l’onglet correspondant après l’avoir ouvert, puis de sélectionner le menu
d’exécution (Ctrl-E).
5
F IGURE 7 – Exécution d’un programme parmi plusieurs onglets.
3
Liens utiles
— Site officiel de Python : www.Python.org/
— Site où télécharger la dernière version de Python et l’interface IDLE :
www.Python.org/downloads/
— Site où télécharger l’outil Pyzo : www.pyzo.org/start.html
— Mémento Bases Python 3 :
perso.limsi.fr/pointal/Python:memento
perso.limsi.fr/pointal/Python:abrege
— Site où télécharger (gratuitement) le livre "Apprendre à programmer avec Python" de
Gérard Swinnen : inforef.be/swi/Python.htm
— Site où télécharger (gratuitement) le livre "How to Think Like a Computer Scientist”
d’Allen B. Downey :
www.greenteapress.com/thinkPython/thinkPython.pdf
6
Exercice 1
La fonction print() permet d’afficher la valeur d’une ou plusieurs expressions passées en
paramètre :
>>> pi=3.14
>>> print(2*pi)
6.28
>>> print("2*pi=", 2*pi)
2*pi= 6.28
Deux paramètres optionnels permettent de préciser l’affichage.
Le premier, sep, indique ce qui doit séparer les différentes valeurs affichées (par défaut il
s’agit d’une espace). On l’utilise en ajoutant sep="X" comme paramètre, où X est la chaîne
de séparation. Testez :
print(pi,
print(pi,
print(pi,
print(pi,
2*pi,
2*pi,
2*pi,
2*pi,
4*pi)
4*pi, sep=",")
4*pi, sep="--")
4*pi, sep="")
Le second paramètre optionnel est end qui indique la chaîne à ajouter à la fin de l’affichage
(par défaut, il s’agit d’un \n, le retour à la ligne). On l’utilise en ajoutant end="X" comme
paramètre, où X est la chaîne de terminaison. Testez :
print(pi, 2*pi)
print(pi, 2*pi, end="*")
print(pi, 2*pi, end="\n\n")
print(pi, 2*pi, end="", sep="-")
print(pi); print(2*pi)
print(pi, end=","); print(2*pi)
La fonction input() permet de suspendre le programme afin de récupérer une chaîne
de caractères tapée par l’utilisateur au clavier. Si on veut récupérer un entier, il faut utiliser
l’instruction int(input()). L’exécution de l’instruction input() ne fait qu’attendre, sans
qu’une indication prévienne l’utilisateur qu’il doit entrer quelque chose ; c’est pourquoi la fonction input() est systématiquement associée à un affichage préalable :
print("Entrez une valeur entière")
x = int(input())
Ces deux instructions peuvent être combinées en une en passant la chaîne à afficher en
paramètre de input :
x = int(input("Entrez une valeur entière"))
La seule différence est que dans ce deuxième cas, il n’y a plus de retour à la ligne à la fin de
l’affichage.
Écrire un programme en Python qui demande à l’utilisateur d’entrer une valeur numérique
entière, une valeur réelle et une chaîne de caractères puis affiche ces trois valeurs sur trois lignes
successives. Ce programme ne devra comporter qu’une seule instruction print.
7
Exercice 2
Indiquer précisément les actions engendrées par les instructions python suivantes :
x=3.5
print(x)
print("x")
print("x=",x)
Exercice 3
Écrire un programme, appelée ex2.py, permettant de lire une valeur saisie au clavier par un
utilisateur et, de calculer et d’afficher l’image de ce nombre x par la fonction
f (x) = 3x + 1
Exercice 4
Écrire un programme python permettant de lire 2 valeurs, de les stocker dans deux variables et
d’échanger la valeur de ces deux variables.
Exercice 5
Utilisée dans l’interpréteur de commandes, la fonction type(X) permet d’afficher le type de
l’expression X. Par exemple :
>>> type(3)
<class ’int’>
>>> type(3.5)
<class ’float’>
>>> type("Hello")
<class ’str’>
Attention, la virgule utilisée dans l’écriture française des nombres décimaux est, en informatique, toujours remplacée par un point comme dans l’écriture anglophone. Pour vous en
convaincre, testez la commande type(3,14).
C’est malheureusement une erreur assez classique qui ne provoque pas systématiquement le
plantage ci-dessus. Testez les deux commandes suivantes :
pi = 3,14
type(pi)
8
L’explication est la suivante. La virgule permet de séparer des valeurs d’une séquence d’éléments. Ainsi l’affectation pi=3,14 ne concerne pas la valeur réelle 3,14 mais une séquence
de deux valeurs, 3 et 14. On peut d’ailleurs retrouver cette séquence en affichant la valeur de la
variable pi :
>>> pi=3,14
>>> pi
(3, 14)
L’affichage type(pi) nous indique donc bien que pi est un « tuple », qui est un type
spécial de séquence, que nous verrons plus tard en cours.
Exercice 6
— int(X) permet de transformer un valeur réelle (de type float) ou une chaîne (représentant un entier) en une valeur de type entier.
— float(X) permet de transformer une valeur entière ou une chaîne en valeur réelle de
type float.
— str(X) permet de transformer une valeur numérique en chaîne de caractères.
Tester les commandes suivantes et interpréter les résultats :
type(3)
6.0//4
type(3.14)
2+"3"
type("3")
2+int(3.5)
type("3.14")
2+int("3")
type(3+4)
2+int("3.5")
type(3*4.0)
2+float("3")
6/4
2+float("3.5")
8/4
str(2)+"3"
6//4
str(2.5)+"3.5"
8//4
Exercice 7
Étant donnés la taille (en cm) et l’âge d’un individu, on donne la formule suivante du poids
idéal : 0, 9(taille − 100 + age/10). Écrire et tester un programme en Python qui saisit au clavier
la taille et l’âge, et affiche le poids idéal.
Exercice 8
Écrire un algorithme permettant de lire une valeur entière, d’incrémenter cette valeur de 1 puis
de l’afficher.
9
Exercice 9
Créer un fichier ex5.py contenant le programme suivant :
a=float(input())
b=int(input())
if (a>b): b=b+1
if (b<4):
if (a<0):
a=a-b
else:
b+=int(a)
print("moins de 4")
else:
print("plus de 4")
b-=4
print("a=",a)
print("b=",b)
Exécuter votre programme pour différentes valeurs saisies par l’utilisateur et analyser les
différentes exécutions :
a) 2.3 puis -2
b) 4 puis 3
c) -1 puis 1
Exercice 10
Écrire un programme en Python qui saisit trois nombres réels a, b et c et affiche la résolution de
l’équation ax2 + bx + c = 0 (on distinguera trois cas : ∆ < 0, ∆ = 0 et ∆ > 0).
Afin de pouvoir calculer la racine carrée, on ajoutera la ligne
from math import sqrt
en tête de fichier et on utilisera ensuite la fonction sqrt() (square root).
Tester votre programme en vous assurant que vous obtenez bien les solutions suivantes (si
tel n’est pas le cas, corriger votre programme !) :
1
2
3
4
a
1
4
-1
0
b
1
4
2
1
c
-2
1
-3
-2
Solutions
x1 = −2, x2 = 1
x = −0.5
−2+i∗2.83
x1 =
, x2 = −2−i∗2.83
−2
−2
x=2
Exercice 11
Écrire un programme en Python qui saisit un entier n et affiche "Ajourné" si n < 10, "Passable"
si 10 ≤ n < 12, "AB" si 12 ≤ n < 14, "B" si 14 ≤ n < 16 et "TB" si n ≥ 16.
10
Exercice 12
Écrire un programme en Python qui saisit 3 nombres et affiche "oui" si l’un des 3 est égal à la
somme des 2 autres et "non" sinon.
Exercice 13
Écrire en Python, un programme qui saisit 6 nombres a, b, c, d, e et f et affiche la résolution du
système d’équations :
ax + by = c
dx + ey = f
Quelles sont les différentes issues de cette résolution ?
Tester votre programme en vous assurant que vous obtenez bien les solutions suivantes (si
tel n’est pas le cas, corriger votre programme !) :
Tests a
1
1
2
1
3
1
4
1
5
2
6
1
7
-3
b
2
2
2
0
1
0
1
c
1
1
1
-1
1
-1
2
d e
2 1
0 1
1 0
2 1
4 2
1 0
12 -4
f
Solutions
2
x = 1, y = 0
2
x = −3, y = 2
2
x = 2, y = −0.5
2
x = −1, y = 4
6
pas de solution
1
pas de solution
-8 infinité de solutions
11
4
4.1
Annexe : Avoir son propre environnement Python
Installer Python
Pour installer Python sur votre machine personnelle, vous devez télécharger la dernière version du langage à l’adresse www.Python.org/downloads/ en récupérant la version adaptée à votre système (voir figure 8).
F IGURE 8 – Page de téléchargement Windows.
Sous windows par exemple, les instructions à suivre sont :
— télécharger le fichier correspondant à la configuration de votre machine (voir figure 9
par exemple) ;
— cliquer sur le fichier pour l’installer (voir figure 10).
Sur MacOS, la procédure est similaire : télécharger le fichier d’installation et l’exécuter
(figure 11). Il faut ensuite se procurer la dernière version de l’interface graphique liée à Python
en allant sur www.Python.org/download/mac/tcltk/ (figure 12).
12
F IGURE 9 – Téléchargement de Python sous Windows.
F IGURE 10 – Installer Python sous Windows.
F IGURE 11 – Installation de Python sous MacOS.
F IGURE 12 – Tcl/Tk sous MacOS.
Enfin, on procède de même sous Linux avec une installation manuelle une fois le fichier
téléchargé.
13
4.2
Travailler avec le terminal
Une fois Python installé, on peut lancer directement l’interpréteur à partir du terminal
MacOS ou Linux avec les commandes Python (pour lancer l’interpréteur en version 2) et
Python3 (pour la version 3), voir figure 13.
F IGURE 13 – Terminal avec les commandes Python 2 et 3 sous MacOS et Linux.
On peut aussi directement utiliser le terminal pour exécuter un fichier Python contenant un
programme complet en faisant suivre le nom de la commande (Python ou Python3) par le
nom du fichier.
F IGURE 14 – Exécution du fichier de gauche dans un terminal.
L’installation de Python génère également l’installation d’une interface, appelée IDLE (Python GUI). Cette interface permet de saisir des instructions directement dans l’interpréteur de
commandes mais également d’exécuter des programmes Python enregistrés dans des fichiers.
Nous préférons utiliser l’interface Pyzo.
4.3
L’outil Pyzo
Pour installer Pyzo sur votre machine personnelle, vous devez préalablement avoir installé
Python (voir section 4.1). Puis vous devez télécharger la version de Pyzo correspondant à votre
machine à l’adresse : www.pyzo.org/start.html.
Au premier lancement de Pyzo, il est nécessaire de lui indiquer la version de l’interpréteur
Python à utiliser. Pour ce faire, il faut aller dans le menu Shell et choisir l’option Edit shell
configurations... (voir figure 15).
14
F IGURE 15 – Édition d’un shell avec Pyzo.
Dans le dialogue qui s’affiche, on indique dans le champ exe la version de Python choisie.
Dans la figure 16, on s’aperçoit qu’il n’y a qu’un seul interpréteur Python, celui que l’on a
installé à la section 4.1, c’est-à-dire la dernière version 3.5.1. (Sous MacOS, il peut y avoir
plusieurs versions disponibles si Python est déjà installé par le système. L’important est de
choisir une version 3 de Python.)
F IGURE 16 – Configuration du shell Python avec Pyzo.
On peut également en profiter pour changer la langue par défaut du logiciel en allant dans
le menu Settings et en choisissant French dans le sous-menu Select language. Il faut ensuite
quitter puis relancer le programme pour que ces modifications soient prises en compte.
15
Téléchargement