La console python
Une console Python (shell en Anglais) permet de saisir et d’exécuter des instructions les unes après les autres, en gardant en mémoire les variables, les imports, …
Il en existe de plusieurs sortes :
- Python (command line) : une simple console, sans coloration syntaxique.
Exemple sous Windows :
- IDLE (Python GUI) : un environnement de développement très simple, comprenant une console.
- La console en ligne du site python.org :
- Les consoles dans des IDE plus évolués (Spyder, PyZo, …)
Les chevrons >>>
représentent l’invite (prompt) = on peut saisir des commandes :
>>> 1+1 2
Il est possible de saisir plusieurs instructions en une seule ligne, à condition de les séparer par un point-virgule ;
:
>>> 2+1 ; 3*4 3 12
Python comme calculatrice
Depuis une console, on peut se servir de Python comme d’une calculatrice :
>>> 3 + 9*2 - (45/2) -1.5 >>> 5/3 1.6666666666666667 >>> 34//5 ; 34%5 # quotient et reste de la division euclidienne de 34 par 5 6 4 >>> 2**10 # pour l’exponentiation (et non 2^10) 1024 >>> 1 + 3 * 5 # la multiplication est prioritaire par rapport à l’addition 16 >>> 3 * 5 ** 2 # la puissance est prioritaire par rapport à la multiplication 75 >>> 1 + 2j - 5 + 4j ; (1j)**2 # les complexes sont codés sous la forme a+bj (-4+6j) (-1+0j)
Remarques :
- le symbole « dièse »
#
permet de placer des commentaires dans les lignes de commandes ; tout ce qui se situe à droite d’un symbole#
(jusqu’au changement de ligne) est ignoré par l’interpréteur.Les commentaires sont souvent indispensables pour améliorer la lisibilité d’un code.
- il est interdit de mettre des espaces devant les instructions, sous peine de recevoir l’erreur :
IndentationError: unexpected indent
Types de nombre
Il existe deux principaux types de nombre dans Python :
- Le type
int
désigne une valeur entière (en anglais : integer), - alors que le type
float
désigne une valeur réelle (float
est un raccourci de floating point number : nombre à virgule flottante).
Fonctions mathématiques
Certaines fonctions mathématiques sont intégrées au noyau de Python, les build-in functions :
>>> abs(-9) # valeur absolue 9 >>> pow(3,2) # équivalent à 3**2 9
Mais d’autres fonctions (\(x\rightarrow\sqrt{x}\) , \(x\rightarrow\sin{x}\), …) sont disponibles dans la bibliothèque standard de Python : pour pouvoir les utiliser il faut les importer depuis le module math
de la bibliothèque standard avec une instruction import
(voir les différentes méthodes d’import d’un module)
>>> import math
Pour obtenir la racine carrée d’un nombre, on utilise la fonction sqrt()
(square root) du module math
de la manière suivante :
>>> math.sqrt(5) 2.23606797749979
Exercice :
- En utilisant l’instruction
help(math)
, calculer :
- \(\ln{5}\) (logarithme naturel)
- \(3.2^5\)
- \(\log{256}\) (logarithme décimal)
- \(\sin{\pi}\)
- \(|-3,5|\)
- \(100!\) (fonction factorielle)
- \(e^{i\pi}\) (fonction exponentielle)
- \(1+\frac{1}{10^{16}}\)
Interactions avec l’utilisateur
Affichage
On affiche des résultats avec la fonction print()
, en séparant les arguments par des virgules :
>>> a = 3 >>> print(2*a, a**3, a-5) 6 27 -2 >>> print("La valeur de a est :", a) La valeur de a est : 3 >>> b = 10 >>> print("La somme des deux variables est :", a+b) La somme des deux variables est : 13
On peut préciser deux arguments particuliers :
end
pour définir ce qui va s’afficher à la fin de la chaîne :
>>> print(a, end =':') ; print(a) 3:3
- et
sep
pour définir le séparateur entre les différents éléments de la chaîne :
>>> print(2*a, a**3, a-5, sep = '---') 6---27----2
Le caractère de retour à la ligne est "\n"
:
>>> print("Il est grand temps de retourner\nà la ligne") Il est grand temps de retourner à la ligne
Exercice :
- Faire afficher (respecter les espaces) :
Les premières puissances de 2 sont : 2 ; 4 ; 8 ; 16 ; 32 ; 64 ; 128
Saisie
Pour inviter l’utilisateur à saisir des données, on utilise la fonction input()
:
>>> x = input("Donner un entier : ") Donner un entier : 17 >>> x '17'
Remarque :
x
est une chaîne de caractère. L’instructioneval()
permet alors de récupérer la valeur dex
:>>> eval(x) 17
Exercice :
Faire :
>>> a = input() ; b = input()
- Écrire une instruction pour réaliser l’opération \(a+b\).
Variables
Affectation (ou assignation)
Il est possible de mémoriser une valeur dans une variable avec le symbole d’affectation qui se note =
sous Python.
>>> a = 2 ; a + 3 ; a - 4 5 -2
- L’instruction
a = 2
crée une nouvelle variable appeléea
et mémorise dans cette variable la valeur 2, on dit que la « variablea
est initialisée à la valeur 2. - Les instructions
a + 3
eta - 4
sont évaluée en remplaçanta
par sa valeur.
>>> a = 8 ; b = a + 1 ; b ; a = a + 4 ; a 9 12
- L’instruction
a = 8
ne crée pas de nouvelle variable car cette variablea
est déjà créée, par contre elle modifie la valeur mémorisée. - L’instruction
b = a + 1
commence par évaluer l’expression à droite du symbole=
(a + 1
qui s’évalue en 9) ; puis elle mémorise cette nouvelle valeur dans la variable de gauche, icib
. - L’instruction
a = a + 4
fonctionne de façon similaire : elle commence par évaluer ce qu’il y a à droite du symbole=
(a+4
qui s’évalue en 12), puis elle mémorise cette valeur dans la variable de gauche, c’est à direa
. Ainsi, l’instructiona = a + 4
augmente de 4 la valeur mémorisée para
.
Remarque :
- l’instruction
=
n’a pas grand chose à voir avec le symbole mathématique d’égalité. En particulier elle n’est pas symétrique : il doit y avoir à gauche un symbole où l’on peut mémoriser un résultat.Par exemple les instructions
a = 2
oua = a + 1
sont correctes, mais2 = a
oua + 1 = a
n’ont aucun sens pour Python.
Pour éviter la confusion, Python propose des raccourcis qui ont l’avantage d’éviter la confusion avec la manipulation d’équations en algèbre :
>>> x += 1 # remplace x par x+1 >>> x -= 3 # remplace x par x-3 >>> x **=2 # remplace x par x^2 >>> x *= 3 # remplace x par x*3 >>> x /= 2 # remplace x par x/2
Exercice :
- Répondre aux questions suivantes sans utiliser la console :
- Que vaut
z
après la suite d’instructions :z = 1 ; z + 3 ; t = 2 ; z += 2 ; z = t + z/2
- Par quoi faut-il remplacer le
?
pour que la suite d’instructions suivante affiche1.5
?m = 5 ; n = 3*m ; m += ? ; n / m
Affectations multiples
Autre raccourci intéressant : on peut assigner un même objet à plusieurs variables simultanément ; ces deux variables renvoient alors au même objet (on dit parfois que ce sont deux alias du même objet).
>>> x = y = 7 >>> id(x), id(y) # id(x) donne l’identifiant de x (4343385712, 4343385712)
Remarque :
- la fonction
id(objet)
renvoie l’identifiant de l’objetobjet
: ce numéro est unique et invariant pendant toute la durée de vie de l’objet.
Ici le fait que x
et y
aient le même identifiant signale qu’ils pointent vers le même emplacement mémoire : un même objet peut donc avoir plusieurs noms.
Exercice :
- Effectuer les affectations suivantes :
>>> a = 128 ; b = a * 2 ; a = 0 ; bL’instruction
b = a * 2
n’affecte pas àb
le double de la valeur dea
quelle que soit la valeur dea
au long de la session Python. En fait l’objet nomméb
a juste mémorisé la valeur du double dea
et n’a plus aucune relation avec l’objet nomméa
; pour s’en convaincre on peut demander à Python de donner l’identifiant de chaque objet :
- Afficher les identifiants de
a
etb
et vérifier qu’ils sont différents.
- Effectuer à présent la suite des affectations suivantes :
>>> a = [1, 2, 3, 4] ; b = a ; a[1] = 0 ; a ; b
- Afficher les identifiants de
a
etb
et conclure.
L’ordre d’exécution des instructions est fondamental ; les deux séquences suivantes qui contiennent exactement les mêmes instructions, mais dans un ordre différent :
>>> a = 3 >>> b = a - 3 >>> a = a + 1 >>> b 0 |
>>> a = 3 >>> a = a + 1 >>> b = a - 3 >>> b 1 |
Affectations parallèles
On peut aussi effectuer des affectations parallèles à l’aide d’un seul opérateur =
:
>>> x, y = 128, -128 >>> x + y 0 >>> a, b, c = 1, 2, 3 >>> a, b, c (1,2,3)
Exercice :
- Prédire le résultat des deux suites d’instructions suivantes :
>>> x = 19 >>> x += 2 >>> y = x*2 >>> x, y >>> x = 19 >>> x, y = x + 2, x*2 >>> x, y
- Vérifier avec la console Python
Exercice :
L’objectif est d’échanger les contenus de deux variables
x
ety
:
- 1ère méthode : proposer une méthode qui utilise une variable auxiliaire
tmp
- 2ème méthode : on exécute la séquence d’instructions suivantes :
>>> x = x + y ; y = x - y ; x = x - yQuels sont les contenus des variables
x
ety
en fin de séquence ?
- 3ème méthode (la meilleure !) : utiliser une affectation parallèle.
Exercice :
- Affecter à
x
,y
etz
les valeurs respectives suivantes : 3, 1000000 et 3.14156.- À l’aide
print()
et dex
,y
,z
uniquement, afficher successivement :310000003.14156 3 1000000 3.14156 x = 3; y = 1000000; z = 3.14156
Suppression d’une variable
Pour supprimer une variable a
on utilise :
>>> del a
Booléens
En l’honneur du logicien George Boole (1815–1864) les deux valeurs logiques Vrai et Faux s’appellent des booléens. Pour Python, le type bool
(booléen) constitue un type de valeurs, au même titre que int
ou float
: les deux valeurs possibles pour le type bool
sont True
et False
.
Il est possible de manipuler des booléens avec les opérations logiques and
, or
et not
:
>>> True or True True >>> True and False False >>> not False True
Un test est une instruction dont la valeur de retour est un booléen. Voici les comparaisons usuelles entre réels :
>>> 3 < 4 # inférieur strict True >>> 3 <= 4 # inférieur ou égal True >>> 4 > 4 # supérieur strict False >>> 4 >= 4 # supérieur ou égal True >>> 3 == 4 # test d’égalité False >>> 3 != 4 # différent True >>> 3 < 4 < 5 # 3 < 4 et 4 < 5 True
Remarque :
- le test d’égalité se note
==
: à ne pas confondre avec l’instruction d’affectation qui se note=
.
Il est aussi possible de mémoriser un booléen dans une variable.
>>> a = 3 < 2 >>> a False >>> a and True False >>> a or True True
Exercices :
- Testez avec la console si \(\sqrt{3}^2=3\). Interprétation ?
Il est possible d’utiliser ces opérateurs pour faire des comparaisons entre des valeurs de type autre que int
ou float
. Par exemple, il existe un type str
qui permet de coder des chaîne de caractère (str = string en anglais). Dans ce cas on compare suivant l’ordre lexicographique (l’ordre des mots du dictionnaire) :
>>> "girafe" < "hippopotame" True >>> "lutin" > "ogre" False
Quiz
Dépôt de fichier réponse