Académique Documents
Professionnel Documents
Culture Documents
Ludovic P INELLI
23 mai 2001
2
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published
by the Free Software Foundation ; with the Invariant Sections being :
– Copyright,
– Avant-propos,
with the Front-Cover Texts being :
– Python est mon ami,
and with no Back-Cover Texts. A copy of the license is included in the section entitled
"GNU Free Documentation License".
Avant-propos
Ce document n’est pas un cours complet sur le langage Python, ni sur la program-
mation en général. Il ne se destine pas non plus à un public averti. Il faut plutôt le
considérer comme un didacticiel destiné aux personnes n’ayant jamais programmé.
J’ai essayé d’y mettre un peu d’humour pour rendre l’apprentissage plus vivant et
moins académique, tout en étant conscient que l’humour est une chose bien suggestive,
et qui plus est, difficile à faire passer par écrit... Veuillez donc excusez les fautes de
goût...
Python est l’un des langages les plus facile d’accès (Ruby peut être une bonne
alternative). Sa concision et sa puissance, permettent aux commençants d’adopter de
bonnes pratiques de programmation. Enfin, son orientation objet fait de lui une plate
forme idéal pour s’introduire dans le monde de langages plus difficiles comme le C++
ou le Java.
Comme vous le remarquerez, ce « didacticiel » est loin d’être terminé, il est même à
l’état d’ébauche si l’on considère le travail qu’il me reste à faire ! Je travaille dessus au
grè du temps qui m’est disponible (et de mon propre apprentissage de ce langage !)...
Toute remarque, suggestion, critique, insulte, sera évidemment bienvenue à l’une
des adresses suivantes (deux c’est mieux qu’une) :
ludovic.pinelli@free.fr
Pinelli.Ludovic@wanadoo.fr
Ce document est soumis aux termes de la GFDL (GNU Free Documentation Li-
cense). Vous avez donc le droit de le lire, de le distribuer, de le donner, de l’utiliser ou
de le brûler sans avoir à rien payer (les closes de la GFDL sont reproduites en annexe
B)...
Enfin, vous trouverez ce texte dans les formats suivants : html, ps, pdf, et dvi, le
tout issu du fichier source LATEX également disponible. Ils sont tous là :
http://ludovic.pinelli.free.fr/Python/Python_ami.html
Bonne lecture !
3
4
Table des matières
Annexes 35
5
6 TABLE DES MATIÈRES
Bibliographie 45
Index 46
Liste des tableaux
7
8 LISTE DES TABLEAUX
Première partie
9
Chapitre 1
Je connais rien à la
programmation !
Sommaire
1.1 Quand on dit Python, on parle du serpent ? . . . . . . . . . . . 11
1.2 Python peut me sauver la vie... . . . . . . . . . . . . . . . . . . 12
1.3 Si c’est si bien, ça doit coûter cher ! . . . . . . . . . . . . . . . . 13
1.4 Ça y est je l’ai ! Comment je le fait marcher ? . . . . . . . . . . 13
C’est pas grave, avec Python, c’est tout c..n (il faudra que je propose ce slogan qui
me parait pertinent). Il y a tout de même quelques connaissances de base à acquérir,
mais je vous rassure, elles sont peu nombreuses et pas difficiles.
11
12 CHAPITRE 1. JE CONNAIS RIEN À LA PROGRAMMATION !
Les inconvénients sont que chaque fois que vous voulez tester la moindre fonctionnalité
de votre programme, il faut au préalable le re-compiler, et, bien sûr, ça ne fonctionnera
pas si l’ensemble du code n’est pas opérationnel, enfin, le fichier ne s’exécutera que
sur un ordinateur ayant le même SE 1 que le vôtre.
Les langages interprétés fonctionnent différemment. L’interpréteur interprète (ben
oui) directement le code que vous tapez sans que vous ayez à compiler quoi que ce
soit. L’avantage est clair : gain de temps, possibilité de tester une fonctionnalité en
temps réel, etc. L’inconvénient, c’est que pour faire fonctionner votre programme sur
une autre machine, il faut que l’interpréteur y soit installé.
Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut
être installé sous de nombreux SE différents : Unix/Linux, WindowsXX, BeOS, Ma-
cintosh et j’en passe. Et bien sûr, vous n’avez pas à adapter votre code, ce sera le même
pour tous.
Cela peut être différent suivant la version de Python que vous utilisez 3 , et votre
système d’exploitation.
Pour quitter l’interpréteur, utilisez Ctrl+D (ou Ctrl+X sous Windows), mais ce n’est
pas encore le moment !
Voilà, c’est tout, vous venez de démarrez l’interpréteur interactif Python, et vous
savez comment le fermer.
Les signes « >>> » indiquent que c’est à vous de jouer !
Vous pouvez d’ors et déjà taper des commandes qui seront directement exécutées.
Essayons tout de suite. Tapez :
2 Si vous utilisez Python 2.0 (ou 2.1), remplacez python par python2.0 (ou python2.1) chaque
fois que vous voyez cette commande dans le texte. Le choix de Guido VAN ROSSUM d’ajouter le numéro
de version, permet d’utiliser ou de tester vos programmes sur différentes versions antérieures ou futures de
Python.
3 La dernière version en date lors de l’écriture de ce texte est Python 2.1. Ne vous formalisez pas trop
sur la version car dans le développement de Python une grand importance est attachée à la compatibilité.
Ainsi, un programme écrit avec Python 1.5.2 (qui est une version très stable), fonctionnera parfaitement sous
Python 2.x. Toutefois, Python 2.x contient quelques nouveautés bien pratiques dont nous reparlerons dans un
chapitre qui lui sera consacré.
14 CHAPITRE 1. JE CONNAIS RIEN À LA PROGRAMMATION !
25 + 3
et appuyez sur la touche « entrer » de votre clavier. Miracle, Python a calculé pour
vous le résultat !
Les opérateurs + (addition) , - (soustraction) , * (multiplication) , et / (division) ,
sont bien sûr tous utilisables 4 . Nous en verrons d’autres par la suite.
( 2 / (5 - 3) ) * (15 / 5)
(2/(5-3))*15/5
Vous pouvez vous essayer à d’autres calculs plus compliqués, et une fois que vous
aurez fini de jouer avec votre nouvelle calculatrice, nous pourrons passer à autre chose
(oui, oui, Python peut faire encore mieux !).
Le fait de taper quelque chose et d’avoir directement le résultat est très pratique
pour apprendre Python et pour tester des bouts de codes, mais en règle générale, ce
n’est pas ce que nous souhaitons. Nous aimerions plutôt un fichier qui pourra être
sauvegarder pour être réutilisé par la suite. Pour ce faire, vous écrivez votre code dans
n’importe quel éditeur de texte comme Emacs ou Vi sous Linux ou le bloc-note sous
Windows (Emacs est également disponible sous Windows...). La seule chose à faire est
de l’enregistrer avec l’extension .py. Vous pouvez aussi utiliser IDLE en ouvrant dans
celui-ci une nouvelle fenêtre (File | New Window ou Ctrl+X/Ctrl+N). Essayons tout de
suite. Ouvrez votre éditeur de texte favori et tapez ce qui suit :
Et oui, c’est de la magie, et je vous assure que la suite sera encore plus intéressante
(d’ailleurs de quel droit vous permettez-vous de juger ce texte sans l’avoir lu jusqu’au
bout ?) !
4 Si vous utilisez la division de nombres entiers, vous verrez que Python ne donne pas les chiffres après la
virgule dans son résultat (ex : 5 / 2 = 2). Ceci est normal ! Il faut spécifier à Python que vous les voulez
en écrivant par exemple 5 / 2.0 ou 5.0 / 2 Ceci est dû au typage, notion que nous aborderons par la
suite.
1.4. ÇA Y EST JE L’AI ! COMMENT JE LE FAIT MARCHER ? 15
Bien, maintenant que nous savons démarrer Python, utiliser l’interpréteur interac-
tif, créer et exécuter des fichiers python, il ne nous reste plus qu’à apprendre à pro-
grammer...
16 CHAPITRE 1. JE CONNAIS RIEN À LA PROGRAMMATION !
Chapitre 2
Sommaire
2.1 Variation en Do mineur . . . . . . . . . . . . . . . . . . . . . . 17
2.1.1 variabilisons donc... . . . . . . . . . . . . . . . . . . . . . 19
2.2 En fonction de quoi ? . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 En français c’est quoi ? . . . . . . . . . . . . . . . . . . . 20
2.2.2 Et voilà, je fais une fonction en Python, sans complexe... . . 20
2.2.3 Comment que j’fais pour l’utiliser c’te fonction ? . . . . . . 22
2.2.4 A quoi ça sert puisque je peux taper mon calcul directement
dans l’interpréteur interactif Python ? . . . . . . . . . . . . 23
2.3 Je te jure que c’est vrai ! . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1 L’if est un très bal arbre . . . . . . . . . . . . . . . . . . . 24
2.3.2 Laissez lui vous poser les questions . . . . . . . . . . . . . 26
2.3.3 Tant qu’il y aura Python, je ne serais plus seul... . . . . . . 27
2.3.4 Comment dit-il vrai ou faux ? . . . . . . . . . . . . . . . . 27
2.4 Et si je ne veux pas qu’il continue ses bouclettes ? . . . . . . . . 28
2.4.1 break-down ! . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.2 continuons je vous prie... . . . . . . . . . . . . . . . . . . 28
2.5 C’est tout ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
17
18 CHAPITRE 2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR
Une variable a un nom 1 (dans notre cas : total) et une valeur qui peut changer
au cours du déroulement du programme, par exemple, si nous écrivons ceci :
total = 5 + 2
total = 7 + 4
La valeur stockée par total à la première ligne est 7, qui est remplacée par 11 à
la deuxième ligne.
Les plus perspicaces d’entre vous auront peut-être remarqué que le signe « = » ne
correspond donc pas au signe mathématique. Car si total = 7 puis total = 11,
ça veut dire que total peut être différent de total ! En fait, le signe « = » est un
caractère d’affectation qui signifie « stocke ce qu’il y a à droite dans le truc à gauche ».
De même, les fins limiers auront vu qu’il n’est pas nécessaire de livrer quelque
chose de tout cuit (du style 7 ou 11) à la variable, car Python est capable de trouver le
résultat du calcul avant de le stocker dans la variable.
Si vous n’avez été ni perspicace ni fin limier, ne vous en faites pas, Python va vous
aider à le devenir.
Enfin, une variable peut stocker un entier, un nombre réel, un caractère, un mot, une
phrase... ce sont les types de valeur qu’elle peut prendre. Ici les langages de program-
mation diffèrent : dans le cas d’un langage dit « typé », il faut déclarer une fois pour
toute quel est le type de valeur que stockera la variable, et ça ne pourra pas changer de
tout le programme. Python, lui, fait cela pour vous, et ne vous demandera pas, comme
le ferait un douanier, ce que vous avez à déclarer avant de passer à votre programme !
On dit que Python est « typé dynamiquement » (il reconnaît le type des variables
au fur et à mesure que vous les entrez). Mais il faut tout de même savoir vous faire
comprendre de Python, si vous avez essayer 5 / 2 dans l’interpréteur interactif vous
vous êtes rendu compte que Python ne vous retourne que la partie entière du calcul
(vous allez voir que c’est d’ailleurs très pratique...). Pour pallier à cela, il faut écrire
5 / 2.0 ou 5.0 / 2 (ou même 5./2) pour prévenir Python que vous voulez un
chiffres réél comme résultat.
Enfin, Python possède des types très pratiques dont vous ne soupçonnez pas l’exis-
tence, mais ceci sera vu en temps utile. Pour vous mettre en bouche, voici tout de même
quelques types qu’il est possible d’utiliser dans une variables : les listes, les diction-
naires, les nombres complexes... si vous avez envie de savoir ce que sont ces types
lisez la suite (cette phrase utilise un procédé expérimental visant à tenir le lecteur en
haleine...).
Pourquoi il a dit que c’était pratique de n’avoir que la partie entière du chiffre
comme résultat ?... Modulez vos humeurs !
Vous n’oubliez jamais rien vous ! Bon d’accord, je m’explique. Il existe un autre
opérateur moins connu du commun des mortels qui se nomme « modulo » et qui s’écrit
avec le signe « % ». Cet opérateur permet d’avoir le reste de la division. Exemple :
>>> 5 / 2
2
1 Les noms de variables peuvent être constitués de n’importe quel caractère non accentué. Ils ne peuvent
pas commencer par des chiffres mais peuvent en contenir (ex : variable1) ni ne peuvent contenir d’es-
pace. Par contre, elles peuvent commencer et contenir le caractère « _ » (AltGr+8) (ex : _variable ou
ma_variable). Enfin, Python est sensible à la casse (majuscules/minuscules), ainsi mavariable et Ma-
Variable sont deux variables différentes.
2.1. VARIATION EN DO MINEUR 19
>>> 5 % 2
1
Pour retrouver vos souvenirs d’école vous pouvez pensez comme ceci : « Dans 5
combien il y a de fois 2 : 2 fois, il reste 1 ».
En quoi c’est pratique ? Et bien si vous voulez savoir si 4736 est divisible par 37, il
vous suffit d’écrire :
>>>4736 % 37
0
Étant donné qu’il ne reste rien, c’est que 4736 est divisible par 37. Vous allez me
dire qu’il vous suffisez de faire 4736 / 37.0 pour savoir... Ok, pour cette fois, mais
nous verrons qu’il y a des cas ou ce n’est pas si simple (lisez la suite... lisez la suite...
lisez la suite... lisez la suite... lisez la suite...)
>>>352 + 27
379
>>>379 * 54
20466
>>>20466 - 379
2087
>>>total1 = 352 + 27
>>>total2 = total1 * 54
>>>total2 - total1
2087
>>>Prenom = ’’Chevalier’’
>>>Nom = ’’ qui dit Ni’’
>>>dit = ’’ Ni‘‘
>>>Prenom + Nom + dit * 10
’Chevalier qui dit Ni Ni Ni Ni Ni Ni Ni Ni Ni Ni Ni’
>>>352 + 27
379
>>>_ * 54
20466
>>>_ - 379
2087
Surtout, ne vous dites pas : « Ce Python est incroyable ! », car si c’est le cas, vous
risquez de vous évanouir d’admiration en lisant la suite... (troisième procédé expéri-
mental, visant cette fois à faire croire au lecteur que je sais de quoi je parle...)
Sauf que là nous l’avons écrit en français et pas en Python. Mais ce n’est pas très
différent.
pour commenter ce que nous faisons, afin que quelqu’un d’autre ou vous-même
un peu plus tard, puissiez savoir ce que vous avez voulu faire dans cette partie du
programme. Vous pouvez y placer aussi votre liste de courses à faire, mais cela
relève plus de la psychothérapie...
Vous pouvez recopiez directement cette fonction dans l’interpréteur interactif. Après
avoir tapé la première ligne, celui-ci affiche « ... », indiquant qu’il a reconnu une
définition de fonction et vous invitant à taper la suite . Quand vous avez terminé, tapez
deux fois sur « entrer » pour le lui dire :
>>>def conversion(chiffre_m):
... chiffre_cm = chiffre_m * 100
... return chiffre_cm
...
>>>
Si vous avez un message d’erreur c’est que vous avez certainement oublié la ta-
bulation sur la deuxième et/ou troisième ligne ! Bien sûr, votre superbe fonction ne
restera pas en mémoire quand vous fermerez l’interpréteur ! Si vous voulez garder
ce chef d’oeuvre, vous pouvez le taper dans un éditeur de texte et l’enregistrer sous
« chef_d_oeuvre.py » (le nom que j’ai choisit de lui donner n’est qu’un proposition...).
Notez que nous aurions pu simplifier cette fonction en évitant d’avoir recours à une
deuxième variable, de la manière suivante :
def conversion(chiffre\_m):
return chiffre\_m * 100
conversion (18)
chiffre\_cm = 18 * 100
return chiffre\_cm
Si nous optons pour la fonction « simplifiée », c’est pareil, sauf que c’est direc-
tement la ligne de l’instruction return qui fera le calcul avant de nous donner la
réponse :
return 18 * 100
>>>prcnt(200, 2.5)
205.0
Et allons même plus loin ! Imaginons que dans la série de 50 chiffres que vous avez,
le pourcentage à appliquer pour la majorité d’entre eux est de 2,5%. Vous pouvez écrire
votre fonction comme suit :
Dans ce cas, chaque fois que le pourcentage à appliquer est de 2.5%, il vous suffit
d’écrire :
>>>prcnt(200)
205.0
Si ce n’est pas 2,5%, alors vous le spécifiez comme nous l’avons fait auparavant.
C’est ce qu’on appel mettre une valeur par défaut à un paramètre d’une fonction.
C’est quand même bien plus fonctionnel que de taper 50 fois le calcul, non ?
D’ailleurs, c’est pour cela que l’on apelle ce type de programmation, programmation
fonctionnelle.
Alors, heureux ?
24 CHAPITRE 2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR
fonction Ni:
Si Nom = ’’Chevalier’’ :
écrit 5 x ‘‘Ni’’
Sinon:
écrit ‘‘Je ne peux pas dire Ni en votre présence.’’
Ce qui nous donnera à peu près la même chose en Python, mais en anglais :
>>>def Ni(Nom):
... if Nom == ’’Chevalier’’:
... print 5 * ’’Ni‘‘
... else:
... print ‘‘Je ne peux pas dire Ni en votre présence.’’
...
« = » qui signifie, comme nous l’avons vu, « attribue ce qu’il y a à droite à ce qu’il y a
à gauche ». Si vous vous trompez, Python attribuera sagement la valeur « Chevalier » à
la variable Nom, et la condition sera forcément toujours vrai ! La ligne de l’instruction
if est suivit de « : ». Si la condition est vérifiée, la ligne suivante sera exécutée (re-
marquez la deuxième tabulation qui marque notre bloc if, celui-ci peut être en effet de
plusieurs lignes). Cette ligne contient l’instruction print (qui signifie « imprime » en
anglais), et qui « imprimera » sur l’écran ce qui est entre guillemets (rassurez-vous, cela
ne veut pas dire que votre écran sera marqué de manière indélébile ! Si cette expression
vous angoisse, ramplacez-là simplement par « qui affichera à l’écran »).
Qu’est-ce donc que else : ? Cela signifie tout simplement « sinon » en anglais.
Donc, si la condition n’est pas vérifiée, c’est la ligne qui suit cette instruction qui
sera exécutée (toujours indentée à l’aide d’une tabulation, of course 5 ). Il n’est pas
obligatoire de mettre une instruction else, si celle-ci n’est pas utile.
Entrez cette fonction dans votre interpréteur et testez là avec Ni(“Chevalier”)
et Ni(“Ce que vous voulez”).
Considérez maintenant le code suivant :
>>>def Ni (Nom):
... if Nom == ’’Chevalier’’:
... print 5 * ’’Ni ‘‘
... elif Nom == ’’Guido van Rossum’’:
... print ‘‘Je peux faire une exception : ’’ + 5 * ’’Ni ’’
... else :
... print ‘‘Je ne peux pas dire Ni en votre présence.’’
...
L’instruction elif à été ajoutée. elif est l’abréviation de else if (« sinon si »).
Donc si le test du premier if est faux, Python teste la condition qui suit elif. Si c’est
vrai la ligne suivante est exécutée, sinon c’est le bloc else qui l’est. Vous pouvez
mettre autant de elif que vous le souhaitez.
Nous avons fait appel ici à « == » pour tester notre condition. Beaucoup d’autres
opérateurs de comparaisons existent. Les plus courants sont listés dans le tableau 2.1.
Principaux opérateurs
de comparaison
opérateur signification
== égal à
!= différent de
<> différent de (identique à !=)
< strictement inférieur à
> strictement supérieur à
<= inférieur ou égal à
>= supérieur ou égal à
5 En fait, une indentation est nécessaire chaque fois, que la ligne précédente se termine par « : ». Grace
def Ni (Nom):
if Nom == ’’Chevalier’’:
print 5 * ’’Ni ‘‘
elif Nom == ’’Guido van Rossum’’:
print ‘‘Je peux faire une exception : ’’ + 5 * ’’Ni ’’
else :
print ‘‘Je ne peux pas dire Ni en votre présence.’’
Enregistrez votre fichier puis lancer python ni.py dans un terminal, vous de-
vriez obtenir :
Et c’est là que, prenant votre courage à deux mains, vous entrez en scène et répon-
dez fièrement à la question posée. Votre réponse conditionnera ce que fera Python, bien
évidemment.
Comment cela se fait-il ?
Observons un peu notre code. Tout d’abord nous écrivons la fonction que nous
connaissons bien. Ensuite nous disons à Python de mettre
raw_input(‘‘Quel est votre nom ? ’’) dans la variable Nom. raw_input()
est en fait une fonction intégrée à Python qui lit et stocke ce qui est écrit au clavier
(jusqu’à ce que l’on tape sur la touche « return ». Optionnellement, on peut lui ajou-
ter du texte en argument (comme nous l’avons fait ici) pour qu’elle l’imprime. Le
texte que vous entrez va donc être lu par raw_input() puis stocké dans la variable
Nom. Celle-ci est ensuite envoyée à la fonction. S’il fallait récupérer non pas du texte
(des caractères) mais des chiffres avec lesquelles Python doit travailler, il faut utiliser
input() à la place.
Exemple :
10101010101010101010
En effet, Python a considéré le nombre entré comme du texte et l’a donc répété 10
fois au lieu de faire le calcul. Pour que notre programme (qui ne sert vraiment à rien
d’ailleurs...) fonctionne, il faudra donc écrire :
>>>def prcnt():
... chiffre = 10
... while chiffre <= 100 :
... print chiffre + (chiffre * 2.5 / 100)
... chiffre = chiffre + 1
Nous avons d’abord défini une fonction (sans argument). Dans celle-ci, nous créons
une variable chiffre qui prend 10 pour valeur. La ligne suivante contient l’instruc-
tion while qui veut dire “tant que” en anglais. Ainsi, tant que chiffre est inférieur
ou égal (<=) à 100, le bloc qui suit est exécuté. Dans ce bloc, nous trouvons d’abord
une ligne qui dit à python d’afficher le résultat de notre calcul avec chiffre qui a
pour valeur 10. La deuxième ligne met chiffre + 1 dans la variable chiffre,
autrement dit, 11 (vous me suivez ?). Puis, la condition de while est testée à nou-
veau. Si c’est toujours vrai, c’est reparti pour un tour : la 1ère ligne affiche le résultat,
mais cette fois, avec chiffre ayant 11 comme valeur et la deuxième ligne ajoute 1
à chiffre pour l’amener à 12 et ainsi de suite jusqu’à ce que chiffre soit égal à 100.
La boucle se termine alors.
2.4.1 break-down !
L’instruction break est la première à connaître. Elle permet de sortir d’une boucle
while quand c’est nécessaire. Quand est-ce que c’est nécessaire ? Dans bien des cas...
Mais un exemple valant mieux qu’un long discours, imaginez que vous venez de dé-
barquer sur terre, que vous connaissez encore mal les mathématiques de notre planète
(mais vous connaissez l’universel Python bien sûr). Vous ne vous souvenez plus si le
symbole 5 fait partie des nombres entre 0 et 5 000 000, (si vous avez plus débile comme
exemple, je suis preneur...). Vous pourriez alors écrire :
x = 0
while x <= 5000000 :
if x == 5 :
print ‘‘5 fait partie des chiffres’’
x = x + 1
Ca marche, mais vous perdez du temps (essayez, vous verrez) ! En effet la boucle
while continue jusqu’à ce que x soit arrivé à 5 000 000, alors qu’il a trouvé le 5 depuis
longtemps. Heureusement, l’instruction break est là :
x = 0
while x <= 5000000 :
if x == 5 :
print ‘‘5 fait partie des chiffres’’
break
x = x + 1
Dans ce cas dès que x est égal à 5, on sort de la boucle (c’est-à-dire presque immé-
diatement).
Ce code affiche les chiffres pairs entre 1 et 20. On met d’abord x à 0, puis on
lance la boucle while. La première instruction ajoute 1 à x, l’instruction if teste si
x est pair (c’est-à-dire, divisible par 2) 6 . Si c’est le cas, l’instruction continue est
exécutée faisant remonter en haut de la boucle sans que le reste soit exécuté. Si ce n’est
pas le cas (1 fois sur 2), l’instruction print x est exécutée.
Alors ! Hein ? Qu’est-ce qu’on dit à M. Python ?
faisons le point.
Vous connaissez maintenant les instructions if et while avec lesquelles vous avez
contrôlez le flux des informations. C’est-à-dire que vous avez dit à Python quelle était
la décision à prendre face à une condition précise. C’est pourquoi elles sont appellées
instructions conditionnelles. Il existe encore une autre instruction de ce type très utile.
Mais nous n’allons pas la voir tout de suite, car il vous manque encore quelques petites
choses à savoir avant de pouvoir l’utiliser pleinement. Vous connaissez aussi break et
continue, qui servent à contôler le déroulement d’une boucle. Nous sommes donc
prêt pour un exercice un peu plus conséquent :
2.6 Résumé
– Python est un langage interprété. Un programme Python (appelé aussi parfois
script) n’a pas besoin d’être compilé. L’interpréteur Python le lit et l’éxécute au
fur et à mesure.
– L’interpréteur interactif (lancé avec la commande python) permet de tester des
fonctions, de faire différents calculs, etc. en temps réél.
– Une variable est un emplacement mémoire dans lequel est stockée une valeur.
Une variable a :
– Un nom. Celui-ci ne peut comporter de caractères accentués ou spéciaux ni
d’espace et ne doit pas commencer par un chiffre. Il peut comporter le carac-
tère de soulignement (« _ »), toutefois il n’est pas conseillé de commencer
une variable avec ce caractère, cela pourrait provoquer une confusion avec
des variables spéciales que Python fait commencer par un double caractère
« _ » (ne commencez pas à lui embrouiller l’esprit...). Pour finir, Python fait
la distinction entre majuscule et minuscule.
– Quelques variables correctes : var, var1, MaVariable Ma_Variable,
_variable (correct mais pas conseillé).
– Quelques variables incorrectes : 1var, var !,var1&var2, ma variable.
– Un type : ce peut être une nombre entier, un nombre réél, une chaîne de carac-
tère (et bien d’autres que nous n’avons pas encore vu... mystère...).
– En Python, les variables sont typées dynamiquement. Ce qui ne veut pas dire
que les variables sont des créatures sensuelles capable de changer leur couleur
de peaux et de cheveux pour s’adapter à l’homme macho dérrière son écran. Cela
veut dire que vous n’avez pas à déclarer au préalable quelle sera le type de va-
leur qui sera stockée dans ces variables (c’est une nécéssité dans certains autres
langages de programmation). Python affectera de lui-même le type en fonction
de ce que vous y mettez. C’est une facilité que vous offre le langage mais en
contrepartie, Python sera incapable de vous prévenir si vous avez mis une chaîne
de caractère là où il fallait un entier.
– « _ » est une variable spéciale utilisée dans l’interpréteur interactif. Cette va-
riable stocke le dernier calcul effectué.
– Python possède une instruction de test (if) utilisé de la manière suivante :
if <condition> :
#faire des trucs
elif <condition2> :
#faire d’autres trucs
else :
#faire des trucs encore différents
Ce qui signifie : « Si <condition> est vrai, faire des trucs, sinon si <condition2>
est vrai faire d’autres trucs, sinon, faire des trucs encore différents. » Les condi-
tions sont le plus souvent une comparaison (ou plusieurs, encore mystère...). Les
opérateurs de comparaisons sont regroupés dans le tableau 2.1, p.25. Vous pou-
vez mettre autant de elif que vous voulez, ou ne pas en mettre du tout. else
est lui aussi optionnel.
– Python comporte deux instruction de boucle, mais vous n’en connaissez qu’une
(encore encore mystère...), qui se présente comme cela :
while <condition> :
#faire des trucs
Ce qui signifie : « Tant que <condition> est vrai, faire des trucs. »
2.6. RÉSUMÉ 31
33
Annexe A
Sommaire
A.1 Exercices de la partie I . . . . . . . . . . . . . . . . . . . . . . . 35
A.1.1 Petit exercice 1 . . . . . . . . . . . . . . . . . . . . . . . 35
A.1.2 Petit exercice 2 . . . . . . . . . . . . . . . . . . . . . . . 35
A.1.3 Petit exercice 3 . . . . . . . . . . . . . . . . . . . . . . . 37
35
36 ANNEXE A. CORRIGÉS DES EXERCICES
while 1 :
prix = input(‘‘Prix (tapez -1 pour sortir) ? ’’)
print tva(prix)
4. Arrangez-vous pour que le programme se termine si l’utilisateur tape -1.
def tva(prix) :
return prix + (prix * 5.5 / 100)
38 ANNEXE A. CORRIGÉS DES EXERCICES
while 1 :
prix = input(‘‘Prix (tapez -1 pour sortir) ? ’’)
if prix == -1 :
break
print tva(prix)
Annexe B
Note : Pour l’instant, seule la version originale en anglais est légale, c’est
pourquoi c’est celle qui est donnée ici. Vous trouverez des traductions fran-
çaises de la GFDL sur internet.
Sommaire
B.1 Applicability and definitions . . . . . . . . . . . . . . . . . . . . 40
B.2 Verbatim copying . . . . . . . . . . . . . . . . . . . . . . . . . . 40
B.3 Copying in quantity . . . . . . . . . . . . . . . . . . . . . . . . 41
B.4 Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
B.5 Combining documents . . . . . . . . . . . . . . . . . . . . . . . 42
B.6 Collections of documents . . . . . . . . . . . . . . . . . . . . . . 43
B.7 Aggregation with independent works . . . . . . . . . . . . . . . 43
B.8 Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
B.9 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
B.10 Future revisions of this license . . . . . . . . . . . . . . . . . . . 44
Preamble
The purpose of this License is to make a manual, textbook, or other written document "free" in
the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with
or without modifying it, either commercially or noncommercially. Secondarily, this License pre-
serves for the author and publisher a way to get credit for their work, while not being considered
responsible for modifications made by others.
39
40 ANNEXE B. GNU FREE DOCUMENTATION LICENSE (GFDL)
This License is a kind of "copyleft", which means that derivative works of the document
must themselves be free in the same sense. It complements the GNU General Public License,
which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free
software needs free documentation: a free program should come with manuals providing the
same freedoms that the software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose is instruction or
reference.
License applies to the Document are reproduced in all copies, and that you add no other con-
ditions whatsoever to those of this License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or distribute. However, you may
accept compensation in exchange for copies. If you distribute a large enough number of copies
you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.
B.4 Modifications
You may copy and distribute a Modified Version of the Document under the conditions of sec-
tions 2 and 3 above, provided that you release the Modified Version under precisely this License,
with the Modified Version filling the role of the Document, thus licensing distribution and mod-
ification of the Modified Version to whoever possesses a copy of it. In addition, you must do
these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document,
and from those of previous versions (which should, if there were any, be listed in the History
section of the Document). You may use the same title as a previous version if the original
publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of
the modifications in the Modified Version, together with at least five of the principal authors
of the Document (all of its principal authors, if it has less than five).
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
42 ANNEXE B. GNU FREE DOCUMENTATION LICENSE (GFDL)
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright
notices.
F. Include, immediately after the copyright notices, a license notice giving the public permis-
sion to use the Modified Version under the terms of this License, in the form shown in the
Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
given in the Document’s license notice.
H. Include an unaltered copy of this License.
I. Preserve the section entitled "History", and its title, and add to it an item stating at least
the title, year, new authors, and publisher of the Modified Version as given on the Title
Page. If there is no section entitled "History" in the Document, create one stating the title,
year, authors, and publisher of the Document as given on its Title Page, then add an item
describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a Trans-
parent copy of the Document, and likewise the network locations given in the Document
for previous versions it was based on. These may be placed in the "History" section. You
may omit a network location for a work that was published at least four years before the
Document itself, or if the original publisher of the version it refers to gives permission.
K. In any section entitled "Acknowledgements" or "Dedications", preserve the section’s title,
and preserve in the section all the substance and tone of each of the contributor acknowl-
edgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles.
Section numbers or the equivalent are not considered part of the section titles.
M. Delete any section entitled "Endorsements". Such a section may not be included in the
Modified Version.
N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant
Section.
If the Modified Version includes new front-matter sections or appendices that qualify as
Secondary Sections and contain no material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do this, add their titles to the list of
Invariant Sections in the Modified Version’s license notice. These titles must be distinct from
any other section titles.
You may add a section entitled "Endorsements", provided it contains nothing but endorse-
ments of your Modified Version by various parties–for example, statements of peer review or
that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to
25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version.
Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through
arrangements made by) any one entity. If the Document already includes a cover text for the
same cover, previously added by you or by arrangement made by the same entity you are acting
on behalf of, you may not add another; but you may replace the old one, on explicit permission
from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to
use their names for publicity for or to assert or imply endorsement of any Modified Version.
The combined work need only contain one copy of this License, and multiple identical In-
variant Sections may be replaced with a single copy. If there are multiple Invariant Sections with
the same name but different contents, make the title of each such section unique by adding at the
end of it, in parentheses, the name of the original author or publisher of that section if known,
or else a unique number. Make the same adjustment to the section titles in the list of Invariant
Sections in the license notice of the combined work.
In the combination, you must combine any sections entitled "History" in the various original
documents, forming one section entitled "History"; likewise combine any sections entitled "Ac-
knowledgements", and any sections entitled "Dedications". You must delete all sections entitled
"Endorsements."
B.8 Translation
Translation is considered a kind of modification, so you may distribute translations of the Docu-
ment under the terms of section 4. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include translations of some or all Invari-
ant Sections in addition to the original versions of these Invariant Sections. You may include
a translation of this License provided that you also include the original English version of this
License. In case of a disagreement between the translation and the original English version of
this License, the original English version will prevail.
B.9 Termination
You may not copy, modify, sublicense, or distribute the Document except as expressly provided
for under this License. Any other attempt to copy, modify, sublicense or distribute the Docu-
ment is void, and will automatically terminate your rights under this License. However, parties
who have received copies, or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
44 ANNEXE B. GNU FREE DOCUMENTATION LICENSE (GFDL)
http:///www.gnu.org/copyleft/
Each version of the License is given a distinguishing version number. If the Document
specifies that a particular numbered version of this License "or any later version" applies to it,
you have the option of following the terms and conditions either of that specified version or of
any later version that has been published (not as a draft) by the Free Software Foundation. If the
Document does not specify a version number of this License, you may choose any version ever
published (not as a draft) by the Free Software Foundation.
[1] I. VAN L ANINGHAM (T RADUCTION DE D.F RÈRE , K.C OTTEREAUX et N.R ENARD ) –
L’intro python, ISBN 2-7440-0946-6 éd., CampusPress, Octobre 2000, Cet ouvrage très
didactique est bien adapté au débutants. Il propose aussi une bonne introduction à la pro-
grammation d’interfaces graphiques.
[2] O. B ERGER – http ://perso.club-internet.fr/olberger/python/pyton.html
Vous trouverez sur la page web d’Olivier B ERGER la traduction française du tutorial Python,
ainsi que des liens vers les pages fracophones relatives à Python.
[3] M. L UTZ , D. A SCHER (T RADUCTION DE S.TANGUY , O.B ERGER et J.K ALIFA ) – Intro-
duction à python, ISBN 2-84177-089-3 éd., O’Reilly, Janvier 2000, Le livre idéal pour les
personnes pas tout à fait débutantes en programmation.
[4] G. VAN ROSSUM , F. L. D RAKE , J R . et EDITOR – Python tutorial, BeOpen Python-
Labs, python-docs@python.org - http ://www.python.org, Octobre 2000,
Ce texte, ainsi que toute la documentation est livré avec Python, si ce n’est pas le cas, vous
pouvez le télécharger à l’adresse indiquée. C’est bien évidemment un incontournable ! (La
traduction française est disponible sur le site d’Olivier B ERGER (voir ci-dessus)).
[5] M. L UTZ (T RADUCTION J.G UÉRIN ) – Python précis & concis, ISBN 2-84177-111-3 éd.,
O’Reilly, 2000, Un petit guide de référence sur le langage, indispensable tant que l’on ne
connait pas toutes les instructions, fonctions intégrées et modules par cœur...
45
Index
Symboles def . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
!= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 division. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14, 19
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14, 19
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
E
elif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
<= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
<> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
F
fonction . . . . . . . . . . . . . . . . . . . . . . . . . 20–23
< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
def . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24, 25
nom . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
paramètre par défaut . . . . . . . . . . . . 23
>= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 I
% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 IDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . 13, 14
_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
indentation. . . . . . . . . . . . . . . . . . . . . . . . . . 21
A input() . . . . . . . . . . . . . . . . . . . . . . . . . . 26
instruction conditionnelle . . . . . . . . . 24, 29
addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
affectation . . . . . . . . . . . . . . . . . . . . . . . . . . 18 elif . . . . . . . . . . . . . . . . . . . . . . . . . 25
else . . . . . . . . . . . . . . . . . . . . . . . . . 25
B if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
interpréteur interactif . . . . . . . . . . . . . . . . 13
bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
break . . . . . . . . . . . . . . . . . . . . . . . . 28 L
continue . . . . . . . . . . . . . . . . . . . . 28 langage compilé . . . . . . . . . . . . . . . . . . . . . 11
while . . . . . . . . . . . . . . . . . . . . . . . . 27 langage interprété . . . . . . . . . . . . . . . . 11, 12
infinie . . . . . . . . . . . . . . . . . . . . . . . . . 28 linker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
M
C mode interactif
particularités . . . . . . . . . . . . . . . 20, 22
chaîne de caractères. . . . . . . . . . . . . . . . . . 19
commentaire . . . . . . . . . . . . . . . . . . . . . . . . 21 modulo . . . . . . . . . . . . . . . . . . . . . . . . . 18, 29
compilateur . . . . . . . . . . . . . . . . . . . . . . . . . 11 multiplication . . . . . . . . . . . . . . . . . . . . . . . 14
condition . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
égalité . . . . . . . . . . . . . . . . . . . . . . . . .
vrai/faux. . . . . . . . . . . . . . . . . . . . . . .
24
27
O
opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . 14
continue . . . . . . . . . . . . . . . . . . . . . . . . . 28 égalité . . . . . . . . . . . . . . . . . . . . . . . . . 24
contrôle de flux . . . . . . . . . . . . . . . . . . . . . . 29 addition . . . . . . . . . . . . . . . . . . . . . . . 14
booléen. . . . . . . . . . . . . . . . . . . . . . . . 27
D comparaison . . . . . . . . . . . . . . . . . . . 25
debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 concaténation . . . . . . . . . . . . . . . . . . 19
46
INDEX 47
division . . . . . . . . . . . . . . . . . . . . . . . 14
modulo . . . . . . . . . . . . . . . . . . . . . . . . 18
multiplication . . . . . . . . . . . . . . . . . . 14
répétition . . . . . . . . . . . . . . . . . . . . . . 19
soustraction . . . . . . . . . . . . . . . . . . . . 14
P
paramètre . . . . . . . . . . . . . . . . . . . . . . . 20, 21
programmation fonctionnelle . . . . . . . . . 23
R
raw_input() . . . . . . . . . . . . . . . . . . . . . 26
return . . . . . . . . . . . . . . . . . . . . . . . . 21, 22
S
soustraction . . . . . . . . . . . . . . . . . . . . . . . . . 14
T
tabulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
chaîne de caractères . . . . . . . . . 19, 26
entier . . . . . . . . . . . . . . . . . . . . . . . . . . 18
réel . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
V
variable . . . . . . . . . . . . . . . . . . . . . . . . . 17, 19
nom . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
spéciale . . . . . . . . . . . . . . . . . . . . . . . 20
type . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
chaîne de caractères . . . . . . . . . . 19
entier . . . . . . . . . . . . . . . . . . . . . . . 18
réel . . . . . . . . . . . . . . . . . . . . . . . . . 18
W
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27