Lycée Victor Hugo MPSI-PCSI 2016-2017
TP no1 : Prise en main de Python
Introduction
Lors de cette séance, nous allons faire connaissance avec le langage Python, plus pré-
cisément la version Python 3. Nous n’utiliserons pas directement Python ; nous passerons
par un environnement de développement intégré (en anglais IDE :interactive deve-
lopment environnement)appelé Pyzo.
Nous découvrirons les types de données les plus élémentaires que nous aurons à ma-
nipuler : nombres entiers, nombres flottants, booléens, quelques opérations simples réa-
lisables sur ces types de données. Nous aborderons également la notion de variable et le
mécanisme de l’affectation.
I Lancement de l’IDE Pyzo
Lancer Pyzo : le professeur vous donnera les instructions pour réaliser cette opération.
Une fenêtre apparaît, contenant diverses sous-fenêtres. La sous-fenêtre « shell » doit
présenter quelques lignes ressemblant à
Python 3.4.1 | Contin uum Analytics , Inc .| ( default , May 19 2014 ,
13:02:30) on Windows (64 bits ) .
This is the IEP int erpreter with integrated event loop for PYSIDE
.
Using IPython 2.1.0 -- An enhanced Int erac tive Python .
? -> Introduction and o verview of IPython s features .
% quickref -> Quick r eferen ce .
help -> Python ’s own help system.
object? -> Detail s about ’ object ’ , use ’ o bj ec t ?? ’ for extra
details.
In [1]:
Dans cette fenêtre, le symbole In [1]: est le prompt (ou invite) de Python 1.
Nous pouvons y saisir des instructions élémentaires du langage Python (s’étendant éven-
tuellement sur plusieurs lignes) et observer le résultat, qui apparait derrière un indicateur
Out portant le même numéro :
In [2]: 6*7
Out [2]: 42
1. Quand on utilise Python directement (sans utiliser d’IDE), il s’agira plutôt de >>>.
1
Lycée Victor Hugo MPSI-PCSI 2016-2017
Nous travaillons alors en mode « ligne de commande interactive ». Python se comporte
alors un peu comme une super calculatrice 2.
Dans tous les exemples qui suivent, il faudra taper vous-même ce qui se
trouve après le prompt, puis appuyer sur la touche Entrée . Python répond
alors sur la ligne suivante. La maîtrise d’un langage de programmation passe
essentiellement par la pratique !
II Types simples. Valeurs.
1 Entiers
Python peut manipuler des entiers, positifs ou négatifs, et de taille quelconque.
Tapez les exemples suivants. Ici Python répond alors dans la ligne suivante, en se
contentant de redonner la valeur de l’entier considéré. Pour le moment rien de bien pal-
pitant. Pour l’entier très grand, tapez ce que vous voulez...
In [1]: 1
Out [1]: 1
In [2]: 2
Out [2]: 2
In [3]: -75925
Out [3]: -75925
In [4]: 256948265140514591056105861515915
Out[4]: 256948265140514591056105861515915
Attention Dans les versions antérieures de Python, il y avait deux types d’entiers : les entiers
et les entiers longs. Cette distinction a disparu à partir de la version 3.
On peut alors faire des calculs habituels sur ces entiers de manière très naturelle.
Addition, soustraction, multiplication s’obtiennent ainsi :
In [5]: 5 + 9
Out [5]: 14
In [6]: 5 - 8
Out [6]: -3
In [7]: 78 * 45
Out[7]: 3510
In [8]: 256948265140514591056105861515915 *
71202130156150456015261056
Out [8]:
18295263817931976953295246176894869801857309201762623706240
2. Dans le TP suivant, nous verrons qu’il est possible d’enregistrer des ensembles d’instructions dans
des fichiers, appelés scripts, que l’on pourra faire exécuter par Python, toujours à partir de Pyzo.
2
Lycée Victor Hugo MPSI-PCSI 2016-2017
La notion de type est fondamentale en informatique. On peut le tester pour les ex-
pressions déjà manipulées, à l’aide de l’instruction type. Ici Python répond par “ int ”,
ce qui signifie que les nombres manipulés sont de la classe integer, i.e. des nombres entiers
(relatifs).
In [10]: type(5)
Out [10]: int
In [11]: type(6)
Out [11]: int
In [12]: type(5 + 6)
Out [12]: int
In [13]: type(5 - 6)
Out [13]: int
In [14]: type(5 * 6)
Out [14]: int
Tout ceci est bien naturel, puisque la somme, la différence et le produit de deux entiers
sont toujours des entiers.
Il n’en va pas forcément de même pour la division, puisque en général le rapport de
deux entiers n’est pas un entier. Observons ce qui se passe :
In [15]: 8/3
Out [15]: 2. 666 66666666 666 65
In [16]: type (8/3)
Out [16]: float
On voit donc que le type du résultat d’une division est un nouveau type : le type
float (nombre à virgule flottante). On le remarque à cause du séparateur décimal (le
point .” en Python).
À l’issue d’une division “ /”, le résultat sera toujours un flottant, même si le résultat
est mathématiquement un entier :
In [17]: 8/4
Out [17]: 2.0
In [18]: type (8/4)
Out [18]: float
(noter la réponse donnée sous la forme 2.0, avec présence du séparateur décimal)
Attention donc :
Le résultat d’une division est du type float.
2et 2.0 ne sont pas la même « chose »(à proprement parler, on devrait dire que ce
sont deux types d’objets différents dans Python) car 2est de type entier et 2.0 est
un nombre à virgule flottante, de type flottant.
Si on veut absolument avoir un résultat entier, il faut utiliser la division entière (di-
vision euclidienne). L’opérateur en Python correspondant est “ // ”, comme on le voit
3
Lycée Victor Hugo MPSI-PCSI 2016-2017
ci-dessous 3:
In []: 8 // 4
Out []: 2
In []: type(8 // 4)
Out []: int
In []: 8 // 3
Out []: 2
In []: type(8 // 3)
Out []: int
Si le résultat de la division tombe juste, on a donc la réponse exacte, sous forme d’un
entier. Sinon, a // b donne le quotient dans la division euclidienne de apar b(et c’est
aussi un entier).
Attention Ce comportement était différent dans les versions antérieures de Python.
Pour prendre la puissance d’un entier on peut utiliser deux syntaxes différentes :
l’opérateur ** ou la fonction pow.
In []: 5 ** 4
Out []: 625
In []: pow(5 , 4)
Out []: 625
Nous avons déjà entrevu le type float, que nous approfondissons maintenant.
2 Nombres à virgule flottante
Il s’agit du type naturel pour représenter les nombres réels (et donc ceux utilisés pour
des calculs numériques).
Pour écrire un tel nombre on peut utiliser deux notations. La première utilise juste le
séparateur décimal.
In []: 256.32
Out []: 256.32
Si le nombre est trop grand ou trop petit, on peut utiliser la notation scientifique
en donnant sa mantisse et exposant. Par exemple, pour saisir le nombre 1,619 .1019,
l’écriture 1.619*10**(-19) est pénible et peu lisible. On lui préférera toujours :
In []: 1.619 e -19
Out []: 1 .6 19 e - 19
In []: 1.619 *10**( -19) # é cr iture lourde ...
Out []: 1 .6 19 e - 19 # ... m ê me r é sultat !
Le e-19 ” est donc à remplacer mentalement par “ ×1019 .
3. La numérotation des entrées/sorties n’ayant pas d’importance, on écrira In []: dans l’énoncé à
partir de maintenant.
4
Lycée Victor Hugo MPSI-PCSI 2016-2017
On dispose bien sûr des mêmes opérations que sur les entiers : addition, soustraction,
multiplication, division, puissance. Ici pas de problème de typage : le résultat de ces
opérations sur deux float est un float.
In []: 6.5 + 3.2
Out []: 9.7
In []: type(6.5 + 3.2)
Out []: float
In []: 6.5 - 3.2
Out []: 3.3
In []: type(6.5 - 3.2)
Out []: float
In []: 6.5 * 3.2
Out []: 20.8
In []: type(6.5 * 3.2)
Out []: float
In []: 6.5 / 3.2
Out []: 2.03125
In []: type(6.5 / 3.2)
Out []: float
Qu’en est-il si un des arguments est un entier et l’autre un nombre à virgule flottante ?
In []: 3 + 5.6
Out []: 8.6
In []: type(3 + 5.6)
Out []: float
Vous pouvez essayer avec les autres opérations : on constate donc que dans tous les
cas le résultat est de type float.
Abordons maintenant un point important qui sera développé dans le prochain cours :
les capacités d’un ordinateur étant finies, ce dernier ne peut pas manipuler de manière
exacte tous les nombres réels. Ceux-ci sont donc stockés sous forme approchée par la
machine, et les calculs effectués avec eux sont donc également nécessairement approchés.
Illustrons ceci par le petit exemple suivant :
In []: 0.1
Out []: 0.1
In []: 0.1 + 0.1
Out []: 0.2
In []: 0.1 + 0.1 + 0.1
Out[]: 0.30000000000000004
5
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !