1. Avant-propos
Sommaire
Notes de cours Python
2007–2008 - v 1.3
Bob Cordeau
robert.cordeau@onera.fr
Mesures Physiques
IUT d’Orsay
www.iut-orsay.fr/dptmphy/Pedagogie/Welcome.html
12 juillet 2007
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
2. Avant-propos
Sommaire
Avant-propos
Ces notes reposent sur deux partis pris :
le choix du langage Python ;
le choix de logiciels libres :
Python (www.python.org)
PyScripter (mmm-experts.com/)
gnuplot (sourceforge.net/projects/gnuplot)
...
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
3. Avant-propos
Sommaire
Avant-propos
Ces notes reposent sur deux partis pris :
le choix du langage Python ;
le choix de logiciels libres :
Python (www.python.org)
PyScripter (mmm-experts.com/)
gnuplot (sourceforge.net/projects/gnuplot)
...
Remerciements :
Cette version a b´n´fici´ des lectures attentives de Laurent
e e e
Pointal (LIMSI) et Georges Vincents (IUT d’Orsay).
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
4. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 1
1 Introduction ` l’informatique
a
Environnement mat´riel
e
Environnement logiciel
Langages
Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
5. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 2
2 La « calculatrice » Python
Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
6. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 3
3 Le contrˆle du flux d’instructions
o
Les instructions compos´es
e
Choisir
Boucler
Parcourir
Listes en compr´hension
e
Ruptures de s´quences
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
7. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 4
4 Fonctions–Espaces de noms–Modules
D´finition et exemple
e
Passage des arguments
Espaces de noms
Modules
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
8. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 5
5 Les fichiers
Ouverture – Fermeture
M´thodes d’´criture
e e
M´thodes de lecture
e
Le module « pickle »
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
9. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 6
6 La programmation « OO »
Classes et instanciation d’objets
M´thodes
e
M´thodes sp´ciales
e e
H´ritage et polymorphisme
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
10. Chapitre 1
Chapitre 2
Chapitre 3
Avant-propos
Chapitre 4
Sommaire
Chapitre 5
Chapitre 6
Chapitre 7
Sommaire du chapitre 7
7 La programmation « OO » graphique
Programmes pilot´s par des ´v´nements
e e e
Les biblioth`ques graphiques
e
Les classes de widgets de Tkinter
Le positionnement des widgets
Un exemple
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
11. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
L’ordinateur
D´finition
e
Automate d´terministe ` composants ´lectroniques.
e a e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
12. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
L’ordinateur
D´finition
e
Automate d´terministe ` composants ´lectroniques.
e a e
L’ordinateur comprend entre autres :
un microprocesseur avec une UC (Unit´ de Contrˆle), une
e o
UAL (Unit´ Arithm´tique et Logique), une horloge, une
e e
m´moire cache rapide ;
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
13. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
L’ordinateur
D´finition
e
Automate d´terministe ` composants ´lectroniques.
e a e
L’ordinateur comprend entre autres :
un microprocesseur avec une UC (Unit´ de Contrˆle), une
e o
UAL (Unit´ Arithm´tique et Logique), une horloge, une
e e
m´moire cache rapide ;
e
de la m´moire vive (RAM), contenant les instructions et les
e
donn´es. La RAM est form´e de cellules binaires (bits)
e e
organis´es en mots de 8 bits (octets) ;
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
14. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
L’ordinateur
D´finition
e
Automate d´terministe ` composants ´lectroniques.
e a e
L’ordinateur comprend entre autres :
un microprocesseur avec une UC (Unit´ de Contrˆle), une
e o
UAL (Unit´ Arithm´tique et Logique), une horloge, une
e e
m´moire cache rapide ;
e
de la m´moire vive (RAM), contenant les instructions et les
e
donn´es. La RAM est form´e de cellules binaires (bits)
e e
organis´es en mots de 8 bits (octets) ;
e
des p´riph´riques : entr´es/sorties, m´moires mortes (disque
e e e e
dur, CD-ROM. . . ), r´seau. . .
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
15. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Deux sortes de programmes
Le syst`me d’exploitation : ensemble des programmes qui
e
g`rent les ressources mat´rielles et logicielles ; il propose une
e e
aide au dialogue entre l’utilisateur et l’ordinateur : l’interface
textuelle (interpr`te de commande) ou graphique (gestionnaire
e
de fenˆtres). Il est souvent multitˆche et parfois
e a
multiutilisateur ;
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
16. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Deux sortes de programmes
Le syst`me d’exploitation : ensemble des programmes qui
e
g`rent les ressources mat´rielles et logicielles ; il propose une
e e
aide au dialogue entre l’utilisateur et l’ordinateur : l’interface
textuelle (interpr`te de commande) ou graphique (gestionnaire
e
de fenˆtres). Il est souvent multitˆche et parfois
e a
multiutilisateur ;
les programmes applicatifs d´di´s ` des tˆches particuli`res. Ils
e e a a e
sont form´s d’une s´rie de commandes contenues dans un
e e
programme source ´crit dans un langage « compris » par
e
l’ordinateur.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
17. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Des langages de diff´rents niveaux
e
Chaque processeur poss`de un langage propre, directement
e
ex´cutable : le langage machine. Il est form´ de 0 et de 1 et
e e
n’est pas portable, mais c’est le seul que l’ordinateur
« comprend » ;
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
18. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Des langages de diff´rents niveaux
e
Chaque processeur poss`de un langage propre, directement
e
ex´cutable : le langage machine. Il est form´ de 0 et de 1 et
e e
n’est pas portable, mais c’est le seul que l’ordinateur
« comprend » ;
le langage d’assemblage est un codage alphanum´rique du
e
langage machine. Il est plus lisible que le langage machine,
mais n’est toujours pas portable. On le traduit en langage
machine par un assembleur ;
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
19. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Des langages de diff´rents niveaux
e
Chaque processeur poss`de un langage propre, directement
e
ex´cutable : le langage machine. Il est form´ de 0 et de 1 et
e e
n’est pas portable, mais c’est le seul que l’ordinateur
« comprend » ;
le langage d’assemblage est un codage alphanum´rique du
e
langage machine. Il est plus lisible que le langage machine,
mais n’est toujours pas portable. On le traduit en langage
machine par un assembleur ;
les langages de haut niveau. Souvent normalis´s, ils
e
permettent le portage d’une machine ` l’autre. Ils sont
a
traduits en langage machine par un compilateur ou un
interpr´teur.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
20. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Bref historique des langages
Ann´es 50 (approches exp´rimentales) : FORTRAN, LISP,
e e
COBOL. . .
Des centaines de langages ont ´t´ cr´´s, mais l’industrie n’en
e e ee
utilise qu’une minorit´.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
21. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Bref historique des langages
Ann´es 50 (approches exp´rimentales) : FORTRAN, LISP,
e e
COBOL. . .
Ann´es 60 (langages universels) : ALGOL, PL/1, PASCAL. . .
e
Des centaines de langages ont ´t´ cr´´s, mais l’industrie n’en
e e ee
utilise qu’une minorit´.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
22. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Bref historique des langages
Ann´es 50 (approches exp´rimentales) : FORTRAN, LISP,
e e
COBOL. . .
Ann´es 60 (langages universels) : ALGOL, PL/1, PASCAL. . .
e
Ann´es 70 (g´nie logiciel) : C, MODULA-2, ADA. . .
e e
Des centaines de langages ont ´t´ cr´´s, mais l’industrie n’en
e e ee
utilise qu’une minorit´.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
23. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Bref historique des langages
Ann´es 50 (approches exp´rimentales) : FORTRAN, LISP,
e e
COBOL. . .
Ann´es 60 (langages universels) : ALGOL, PL/1, PASCAL. . .
e
Ann´es 70 (g´nie logiciel) : C, MODULA-2, ADA. . .
e e
Ann´es 80–90 (programmation objet) : C++, LabView, Eiffel,
e
Matlab. . .
Des centaines de langages ont ´t´ cr´´s, mais l’industrie n’en
e e ee
utilise qu’une minorit´.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
24. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Bref historique des langages
Ann´es 50 (approches exp´rimentales) : FORTRAN, LISP,
e e
COBOL. . .
Ann´es 60 (langages universels) : ALGOL, PL/1, PASCAL. . .
e
Ann´es 70 (g´nie logiciel) : C, MODULA-2, ADA. . .
e e
Ann´es 80–90 (programmation objet) : C++, LabView, Eiffel,
e
Matlab. . .
Ann´es 90–2000 (langages interpr´t´s objet) : Java, Perl,
e ee
tcl/Tk, Ruby, Python. . .
Des centaines de langages ont ´t´ cr´´s, mais l’industrie n’en
e e ee
utilise qu’une minorit´.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
25. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Deux techniques de production des programmes
La compilation est la traduction du source en langage objet.
Elle comprend au moins quatre phases (trois phases d’analyse
— lexicale, syntaxique et s´mantique — et une phase de
e
production de code objet). Pour g´n´rer le langage machine il
e e
faut encore une phase particuli`re : l’´dition de liens. La
e e
compilation est contraignante mais offre une grande vitesse
d’ex´cution ;
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
26. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Deux techniques de production des programmes
La compilation est la traduction du source en langage objet.
Elle comprend au moins quatre phases (trois phases d’analyse
— lexicale, syntaxique et s´mantique — et une phase de
e
production de code objet). Pour g´n´rer le langage machine il
e e
faut encore une phase particuli`re : l’´dition de liens. La
e e
compilation est contraignante mais offre une grande vitesse
d’ex´cution ;
e
dans la technique de l’interpr´tation chaque ligne du source
e
analys´ est traduite au fur et ` mesure en instructions
e a
directement ex´cut´es. Aucun programme objet n’est g´n´r´.
e e e ee
Cette technique est tr`s souple mais les codes g´n´r´s sont
e e ee
peu performants : l’interpr´teur doit ˆtre utilis´ ` chaque
e e ea
ex´cution. . .
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
27. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Techniques de production de Python
Technique mixte : l’interpr´tation du bytecode compil´. Bon
e e
compromis entre la facilit´ de d´veloppement et la rapidit´
e e e
d’ex´cution ;
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
28. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Techniques de production de Python
Technique mixte : l’interpr´tation du bytecode compil´. Bon
e e
compromis entre la facilit´ de d´veloppement et la rapidit´
e e e
d’ex´cution ;
e
le bytecode (forme interm´diaire) est portable sur tout
e
ordinateur muni de la machine virtuelle Python.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
29. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
La construction des programmes : le g´nie logiciel
e
Plusieurs mod`les sont envisageables, par exemple :
e
la m´thodologie proc´durale. On emploie l’analyse
e e
descendante et remontante qui proc`de par raffinements
e
successifs : on s’efforce de d´composer un probl`me complexe
e e
en sous-programmes plus simples. Ce mod`le structure
e
d’abord les actions ;
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
30. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
La construction des programmes : le g´nie logiciel
e
Plusieurs mod`les sont envisageables, par exemple :
e
la m´thodologie proc´durale. On emploie l’analyse
e e
descendante et remontante qui proc`de par raffinements
e
successifs : on s’efforce de d´composer un probl`me complexe
e e
en sous-programmes plus simples. Ce mod`le structure
e
d’abord les actions ;
la m´thodologie objet. On con¸oit des fabriques (classes) qui
e c
servent ` produire des composants (objets) qui contiennent
a
des donn´es (attributs) et des actions (m´thodes). Les classes
e e
d´rivent (h´ritage et polymorphisme) de classes de base dans
e e
une construction hi´rarchique.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
31. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
La construction des programmes : le g´nie logiciel
e
Plusieurs mod`les sont envisageables, par exemple :
e
la m´thodologie proc´durale. On emploie l’analyse
e e
descendante et remontante qui proc`de par raffinements
e
successifs : on s’efforce de d´composer un probl`me complexe
e e
en sous-programmes plus simples. Ce mod`le structure
e
d’abord les actions ;
la m´thodologie objet. On con¸oit des fabriques (classes) qui
e c
servent ` produire des composants (objets) qui contiennent
a
des donn´es (attributs) et des actions (m´thodes). Les classes
e e
d´rivent (h´ritage et polymorphisme) de classes de base dans
e e
une construction hi´rarchique.
e
Python offre les deux techniques.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
32. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Programme et algorithme
Algorithme
Moyen d’atteindre un but en r´p´tant un nombre fini de fois un
e e
nombre fini d’instructions.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
33. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Programme et algorithme
Algorithme
Moyen d’atteindre un but en r´p´tant un nombre fini de fois un
e e
nombre fini d’instructions.
Donc, un algorithme se termine en un temps fini.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
34. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Programme et algorithme
Algorithme
Moyen d’atteindre un but en r´p´tant un nombre fini de fois un
e e
nombre fini d’instructions.
Donc, un algorithme se termine en un temps fini.
Programme
Un programme est la traduction d’un algorithme en un langage
compilable ou interpr´table par un ordinateur.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
35. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
Programme et algorithme
Algorithme
Moyen d’atteindre un but en r´p´tant un nombre fini de fois un
e e
nombre fini d’instructions.
Donc, un algorithme se termine en un temps fini.
Programme
Un programme est la traduction d’un algorithme en un langage
compilable ou interpr´table par un ordinateur.
e
Il est souvent ´crit en plusieurs parties, dont une qui pilote les
e
autres, le programme principal.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
36. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
La pr´sentation des programmes
e
Un programme source est destin´ ` l’ˆtre humain. Pour en faciliter
ea e
la lecture, il doit ˆtre judicieusement comment´.
e e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
37. Environnement mat´riel
e
Environnement logiciel
Langages
Introduction ` l’informatique
a Production des programmes
M´thodologie
e
Algorithme et programme
Importance des commentaires
La pr´sentation des programmes
e
Un programme source est destin´ ` l’ˆtre humain. Pour en faciliter
ea e
la lecture, il doit ˆtre judicieusement comment´.
e e
La signification de parties non triviales doit ˆtre expliqu´e par un
e e
commentaire.
Un commentaire commence par le caract`re # et s’´tend jusqu’`
e e a
la fin de la ligne :
#---------------------
# Voici un commentaire
#---------------------
9 + 2 # En voici un autre
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
38. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les expressions bool´ennes
e
Deux valeurs possibles : False, True.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
39. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les expressions bool´ennes
e
Deux valeurs possibles : False, True.
Op´rateurs de comparaison : ==, !=, >, >=, <, <=
e
2 > 8 # False
2 <= 8 < 15 # True
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
40. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les expressions bool´ennes
e
Deux valeurs possibles : False, True.
Op´rateurs de comparaison : ==, !=, >, >=, <, <=
e
2 > 8 # False
2 <= 8 < 15 # True
Op´rateurs logiques (concept de shortcut) : not, or, and
e
(3 == 3) or (9 > 24) # True (d`s le premier membre)
e
(9 > 24) and (3 == 3) # False (d`s le premier membre)
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
41. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les expressions bool´ennes
e
Deux valeurs possibles : False, True.
Op´rateurs de comparaison : ==, !=, >, >=, <, <=
e
2 > 8 # False
2 <= 8 < 15 # True
Op´rateurs logiques (concept de shortcut) : not, or, and
e
(3 == 3) or (9 > 24) # True (d`s le premier membre)
e
(9 > 24) and (3 == 3) # False (d`s le premier membre)
e
Les op´rateurs logiques et de comparaisons sont ` valeurs
e a
dans False, True
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
42. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type entier (1/2)
Op´rations arithm´tiques
e e
20 + 3 # 23
20 - 3 # 17
20 * 3 # 60
20 ** 3 # 8000
20 / 3 # 6 (division enti`re)
e
20 % 3 # 2 (modulo)
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
43. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type entier (2/2)
Les entiers longs (seulement limit´s par la RAM)
e
2 ** 40 # 1099511627776L
3 * 72L # 216L
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
44. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type entier (2/2)
Les entiers longs (seulement limit´s par la RAM)
e
2 ** 40 # 1099511627776L
3 * 72L # 216L
Op´rations sur les bases
e
07 + 01 # 8
oct(7+1) # ’010’ (octal)
0x9 + 0x2 # 11
hex(9+2) # ’0xb’ (hexad´cimal)
e
int(’10110’, 2) # 22
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
45. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type flottant
Les flottants sont not´s avec un « point d´cimal » ou en
e e
notation exponentielle :
2.718
3e8
6.023e23
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
46. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type flottant
Les flottants sont not´s avec un « point d´cimal » ou en
e e
notation exponentielle :
2.718
3e8
6.023e23
Ils supportent les mˆmes op´rations que les entiers, sauf :
e e
20.0 / 3 # 6.666666666666667
20.0 // 3 # 6 (division enti`re forc´e)
e e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
47. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type flottant
Les flottants sont not´s avec un « point d´cimal » ou en
e e
notation exponentielle :
2.718
3e8
6.023e23
Ils supportent les mˆmes op´rations que les entiers, sauf :
e e
20.0 / 3 # 6.666666666666667
20.0 // 3 # 6 (division enti`re forc´e)
e e
L’import du module « math » autorise toutes les op´rations
e
math´matiques usuelles :
e
from math import sin, pi
print sin(pi/4) # 0.70710678118654746
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
48. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type complexe
Les complexes sont ´crits en notation cart´sienne, form´e de
e e e
deux flottants.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
49. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Le type complexe
Les complexes sont ´crits en notation cart´sienne, form´e de
e e e
deux flottants.
La partie imaginaire est suffix´e par j :
e
1j # 1j
(2+3j) + (4-7j) # (6-4j)
(9+5j).real # 9.0
(9+5j).imag # 5.0
(abs(3+4j) # 5.0 : module
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
50. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les donn´es et les variables
e
Variable
C’est un nom donn´ ` une valeur.
ea
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
51. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les donn´es et les variables
e
Variable
C’est un nom donn´ ` une valeur.
ea
Informatiquement, c’est une r´f´rence ` une adresse m´moire.
ee a e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
52. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les donn´es et les variables
e
Variable
C’est un nom donn´ ` une valeur.
ea
Informatiquement, c’est une r´f´rence ` une adresse m´moire.
ee a e
Les noms des variables sont conventionnellement ´crits en
e
minuscule. Ils commencent par une lettre ou le caract`ree
soulign´ ( ), puis ´ventuellement, des lettres, des chiffres ou le
e e
caract`re soulign´.
e e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
53. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les donn´es et les variables
e
Variable
C’est un nom donn´ ` une valeur.
ea
Informatiquement, c’est une r´f´rence ` une adresse m´moire.
ee a e
Les noms des variables sont conventionnellement ´crits en
e
minuscule. Ils commencent par une lettre ou le caract`ree
soulign´ ( ), puis ´ventuellement, des lettres, des chiffres ou le
e e
caract`re soulign´.
e e
Ils doivent ˆtre diff´rents des mots r´serv´s de Python.
e e e e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
54. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les mots r´serv´s de Python 2.5
e e
and def finally in print yield
as del for is raise
assert elif from lambda return
break else global not try
class except if or while
continue exec import pass with
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
55. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les mots r´serv´s de Python 2.5
e e
and def finally in print yield
as del for is raise
assert elif from lambda return
break else global not try
class except if or while
continue exec import pass with
Remarques :
Ne pas red´finir les constantes None, True et False.
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
56. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
L’affectation
Affectation
On affecte une variable par une valeur en utilisant le signe = (qui
n’a rien ` voir avec l’´galit´ en math !).
a e e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
57. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
L’affectation
Affectation
On affecte une variable par une valeur en utilisant le signe = (qui
n’a rien ` voir avec l’´galit´ en math !).
a e e
Dans une affectation, le membre de gauche re¸oit le membre de
c
droite (ce qui n´cessite deux temps d’horloge diff´rents).
e e
a = 2 # a "re¸oit" 2
c
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
58. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
L’affectation
Affectation
On affecte une variable par une valeur en utilisant le signe = (qui
n’a rien ` voir avec l’´galit´ en math !).
a e e
Dans une affectation, le membre de gauche re¸oit le membre de
c
droite (ce qui n´cessite deux temps d’horloge diff´rents).
e e
a = 2 # a "re¸oit" 2
c
La valeur d’une variable peut ´voluer au cours du temps (la valeur
e
ant´rieure est perdue) :
e
a = a + 1 # 3 (incr´mentation)
e
a = a - 1 # 2 (d´cr´mentation)
e e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
59. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Formes des instructions d’affectation
Outre l’affectation simple, on peut aussi utiliser les formes
suivantes :
a = 4 # forme de base
a += 2 # idem ` : a = a + 2 si a est d´j` r´f´renc´
a e a e e e
c = d = 8 # cibles multiples (affectation de droite ` gauche)
a
e, f = 2.7, 5.1 # affectation de tuple (par position)
e, f = f, e # ´change les valeurs de e et f
e
g, h = [’G’, ’H’] # affectation de liste (par position)
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
60. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les entr´es
e
L’instruction input() permet se saisir une entr´e au clavier.
e
Elle effectue un typage dynamique. Elle permet ´galement
e
d’afficher une invite :
n = input("Entrez un entier : ")
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
61. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les entr´es
e
L’instruction input() permet se saisir une entr´e au clavier.
e
Elle effectue un typage dynamique. Elle permet ´galement
e
d’afficher une invite :
n = input("Entrez un entier : ")
L’instruction raw input() force une saisie en mode texte que
l’on peut ensuite transtyper :
f1 = raw_input("Entrez un flottant : ")
f1 = float(f1) # transtypage en flottant
f2 = float(raw_input("Entrez un autre flottant : "))
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
62. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les sorties
L’instruction print permet d’afficher des sorties ` l’´cran :
a e
a = 2
b = 5
print a # 2
print "Somme :", a + b # 7
print "Diff´rence :", a - b, # -3
e
print "produit :", a * b # 10
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
63. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les sorties
L’instruction print permet d’afficher des sorties ` l’´cran :
a e
a = 2
b = 5
print a # 2
print "Somme :", a + b # 7
print "Diff´rence :", a - b, # -3
e
print "produit :", a * b # 10
Le s´parateur virgule (,) permet d’empˆcher le retour ` la
e e a
ligne.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
64. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Qu’est-ce qu’une s´quence ?
e
D´finition
e
Une s´quence est un conteneur ordonn´ d’´l´ments, indic´s par des
e e ee e
entiers positifs ou nuls.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
65. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Qu’est-ce qu’une s´quence ?
e
D´finition
e
Une s´quence est un conteneur ordonn´ d’´l´ments, indic´s par des
e e ee e
entiers positifs ou nuls.
Python dispose de trois types pr´d´finis de s´quences :
e e e
les chaˆ
ınes (normales, brutes et en Unicode) ;
les listes ;
les tuples.
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
66. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : notations
e
Trois notations disponibles :
Les guillemets permettent d’inclure des apostrophes :
c1 = "L’eau vive"
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
67. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : notations
e
Trois notations disponibles :
Les guillemets permettent d’inclure des apostrophes :
c1 = "L’eau vive"
Les apostrophes permettent d’inclure des guillemets :
c2 = ’ est "froide" !’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
68. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : notations
e
Trois notations disponibles :
Les guillemets permettent d’inclure des apostrophes :
c1 = "L’eau vive"
Les apostrophes permettent d’inclure des guillemets :
c2 = ’ est "froide" !’
Les triples guillemets ou triples apostrophes conservent la
mise en page (lignes multiples) :
c3 = """Usage :
-h : help
-q : quit"""
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
69. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : op´rations
e e
Longueur :
s = "abcde"
len(s) # 5
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
70. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : op´rations
e e
Longueur :
s = "abcde"
len(s) # 5
Concat´nation :
e
s1 = "abc"
s2 = "defg"
s3 = s1 + s2 # ’abcdefg’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
71. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : op´rations
e e
Longueur :
s = "abcde"
len(s) # 5
Concat´nation :
e
s1 = "abc"
s2 = "defg"
s3 = s1 + s2 # ’abcdefg’
R´p´tition :
e e
s4 = "Fi! "
s5 = s4 * 3 # ’Fi! Fi! Fi! ’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
72. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (1/3)
e e
split() : scinde une chaˆ en une liste de mots :
ıne
’ab*cd’.split(’*’) # [’ab’, ’cd’] (on indique le s´parateur)
e
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
73. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (1/3)
e e
split() : scinde une chaˆ en une liste de mots :
ıne
’ab*cd’.split(’*’) # [’ab’, ’cd’] (on indique le s´parateur)
e
join() : concat`ne une liste de chaˆ
e ınes en une chaˆ :
ıne
’-’.join([’ci’, ’joint’]) # ’ci-joint’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
74. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (1/3)
e e
split() : scinde une chaˆ en une liste de mots :
ıne
’ab*cd’.split(’*’) # [’ab’, ’cd’] (on indique le s´parateur)
e
join() : concat`ne une liste de chaˆ
e ınes en une chaˆ :
ıne
’-’.join([’ci’, ’joint’]) # ’ci-joint’
find() : donne la position d’une sous-chaˆ dans la chaˆ :
ıne ıne
’abracadabra’.find(’bra’) # 1 (le premier indice vaut 0)
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
75. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (1/3)
e e
split() : scinde une chaˆ en une liste de mots :
ıne
’ab*cd’.split(’*’) # [’ab’, ’cd’] (on indique le s´parateur)
e
join() : concat`ne une liste de chaˆ
e ınes en une chaˆ :
ıne
’-’.join([’ci’, ’joint’]) # ’ci-joint’
find() : donne la position d’une sous-chaˆ dans la chaˆ :
ıne ıne
’abracadabra’.find(’bra’) # 1 (le premier indice vaut 0)
count() : donne le nombre de sous-chaˆ
ınes dans la chaˆ :
ıne
’abracadabra’.count(’bra’) # 2
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
76. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (2/3)
e e
lower() : convertit en minuscules :
’PETIT’.lower() # ’petit’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
77. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (2/3)
e e
lower() : convertit en minuscules :
’PETIT’.lower() # ’petit’
upper() : convertit en majuscules :
’grand’.upper() # ’GRAND’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
78. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (2/3)
e e
lower() : convertit en minuscules :
’PETIT’.lower() # ’petit’
upper() : convertit en majuscules :
’grand’.upper() # ’GRAND’
capitalize() : convertit la premi`re lettre en majuscule :
e
’michelle’.capitalize() # ’Michelle’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3
79. Les types simples
Donn´es, variables et affectation
e
Les entr´es-sorties
e
La « calculatrice » Python Les s´quences
e
Retour sur les r´f´rences
ee
Les dictionnaires
Les ensembles
Les chaˆ
ınes de caract`res : m´thodes (2/3)
e e
lower() : convertit en minuscules :
’PETIT’.lower() # ’petit’
upper() : convertit en majuscules :
’grand’.upper() # ’GRAND’
capitalize() : convertit la premi`re lettre en majuscule :
e
’michelle’.capitalize() # ’Michelle’
title() : la premi`re lettre de tous les mots en majuscule :
e
’un beau titre !’.title() # ’Un Beau Titre !’
Bob Cordeau robert.cordeau@onera.fr Notes de cours Python 2007–2008 - v 1.3