Types et variables¶
Nombres et calcul arithmétique¶
Python permet de réaliser facilement des calculs arithmétiques. Il est par exemple possible de saisir dans l’interpréteur :
>>> 2 + 3
5
>>> 2 * 3
6
>>> 10 / 2
5.0
Les opérateurs arithmétiques sont :
+ |
L’addition |
- |
La soustraction |
* |
La multiplication |
** |
La puissance |
/ |
La division |
// |
La division arrondie à l’inférieur |
% |
Le reste de la division (modulo) |
Note
Il existe également l’opérateur @
pour la multiplication matricielle.
Cependant, Python n’a pas de représentation par défaut des matrices. Cet
opérateur n’est donc pas utilisé dans l’environnement Python par défaut.
Par défaut, Python définit une priorité pour les opérateurs. Par exemple, la multiplication et la division sont prioritaires sur l’addition et la soustraction. Pour les expressions mathématiques plus complexes, il est possible d’utiliser les parenthèses.
>>> 10 + 2 * 3 + 6 / 2
19.0
>>> (10 + 2) * (3 + 6) / 2
54.0
Comme beaucoup d’autres langages de programmation, Python fait une différence entre les nombres entiers (int) et les nombres réels appelés également les nombres à virgule flottante (float).
Les nombres entiers sont par défaut écrits en base 10. Mais il est également
possible d’écrire la valeur d’un nombre en binaire (base 2) en la préfixant par
0b
, en octal (base 8) en la préfixant par 0o
et en hexadécimal (base 16)
en la préfixant par 0x
.
>>> 0b1000
8
>>> 0o10
8
>>> 0xFF
255
Les nombres réels s’écrivent avec un .
pour séparer la partie entière de la
partie décimale. Il est également possible d’utiliser la notation scientifique
de la forme x * 10 y
>>> .25
0.25
>>> 12.35
12.35
>>> 2.3e3
2300
>>> 2.3e-3
0.0023
Les entiers et les nombres naturels sont traités différemment par Python. Il est néanmoins possible de passer de l’un à l’autre de manière transparente pour le programmeur. Par exemple la division de deux entiers produit un nombre réel :
>>> 5 / 2
2.5
Tandis que la division avec arrondi à l’inférieur de deux nombres entiers produit un entier :
>>> 5 // 2
2
Note
Python supporte également les nombres complexes. La partie imaginaire est suffixée
par la lettre j
:
>>> 1 + 1j
(1+1j)
>>> (1 + 1j) * (3 + 2j)
(1+5j)
Important
Les nombres à virgule flottante ne permettent pas de
représenter les nombres de manière précise.
Les opérations arithmétiques sur ces nombres peuvent
conduire à des arrondis par la machine. Si l’application doit produire
des résultats précis, alors il est conseillé de s’appuyer sur le module
decimal
… une fois que nous aurons vu les modules et la programmation
objet.
Les variables¶
Une variable est une zone nommée contenant une information. Une variable possède
un identifiant (son nom) et un type (la nature de l’information qu’elle
contient). Pour déclarer une variable en Python, il suffit simplement de donner
son nom et de lui affecter une valeur grâce à l’opérateur d’affectation =
:
>>> x = 1
>>> y = 2.2
Python est un langage de programmation à typage dynamique. Cela signifie que
le type de la variable est déterminé par le type de la valeur qu’il contient.
Dans l’exemple ci-dessus, le type de la variable x
est int (un nombre
entier) et le type de la variable y
est float (un nombre réel).
Astuce
Vous pouvez demander le type d’une variable grâce à la fonction type
:
>>> x = 1
>>> y = 2.2
>>> type(x)
<class 'int'>
>>> type(y)
<class 'float'>
>>> x = y
>>> type(x)
<class 'float'>
Dans l’exemple ci-dessus, on voit que le type de la variable x
change
lorsqu’on lui affecte la valeur de y
.
L’identifiant (ou le nom) d’une variable s’écrit par convention en lettres minuscules. L’identifiant peut contenir des chiffres à condition qu’ils ne soient pas en premier pour ne pas les confondre avec un nombre. Si le nom est formé de plusieurs mots, on les sépare par un trait inférieur (underscore) suivant la notation dite du snake case.
>>> v = 1
>>> v2 = 2
>>> ma_variable = 3
>>> une_autre_variable = 4
Le nom d’une variable peut commencer par un trait inférieur (underscore) mais cela est réservé pour des usages particuliers.
Note
Python ne supporte pas directement la notion de constante. Pour signaler que le contenu d’une variable ne devrait pas être modifié par le programme, les programmeurs ont coutume d’écrire son nom en lettres majuscules. Il n’y a cependant rien qui interdit effectivement de modifier sa valeur :
>>> MA_CONSTANTE = 4
>>> PI = 3.1416
Une variable peut être utilisée dans une expression conforme à son type. Ainsi, il est possible d’utiliser les variables de type int ou float dans des opérations arithmétiques :
>>> x = 1
>>> y = 2.2
>>> x + y * 2
5.4
Il est possible d’inverser le signe d’une variable grâce à l’opérateur unaire
-
:
>>> x = 2
>>> -x
-2
>>> y = -4
>>> -y
4
Il est possible de modifier le contenu d’une variable en utilisant l’opérateur
d’affectation =
:
>>> x = 1
>>> x = 2
>>> x = 2 * x
>>> x
4
Note
Pour ajouter 1 à une variable, on peut écrire :
>>> x = x + 1
Il existe une forme compacte qui s’écrit :
>>> x += 1
Cette forme est disponible pour tous les opérateurs arithmétiques :
>>> x -= 3
>>> x *= 5
>>> x //=2
>>> x **=3
>>> x
343
Une variable peut avoir la valeur spéciale None
. Ce mot-clé indique que la
variable n’a aucune valeur ni aucun type (ou plus exactement la variable a
le type spécial NoneType
).
>>> nothingness = None
Prudence
Pour pouvoir être utilisée dans une expression, une variable doit avoir été déclarée :
>>> x = 1
>>> x += variable_non_declaree
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'variable_non_declaree' is not defined
Exercice¶
Exercice : calcul
Devinez ce qui s’affichera dans la console Python à la place des points d’interrogation :
>>> x = 2
>>> y = 3
>>> z = 5
>>> x + y / y
???????????????????????
>>> (x + y) / z
???????????????????????
>>> y / x
???????????????????????
>>> z // x
???????????????????????
>>> y % x
???????????????????????
>>> total = x
>>> total -= z
>>> total //= 3
>>> total
???????????????????????
La chaîne de caractères¶
En plus des nombres, un autre type de données couramment utilisé est la chaîne
de caractères (character string ou plus simplement string), c’est-à-dire
une portion de texte. En Python, une chaîne de caractères est encadrée par
le caractère apostrophe '
ou le caractère guillemet "
que l’on appelle
les délimiteurs :
>>> "hello the world"
>>> 'bonjour le monde'
Les chaînes de caractères utilisent l’encodage UTF-8. Si l’on désire faire
apparaître certains caractères spéciaux, il faut utiliser un caractère
échappé, c’est-à-dire une séquence commençant par \
afin de la différencier
des caractères normaux ou des délimiteurs :
retour à la ligne |
|
tabulation |
|
apostrophe |
|
guillemet |
|
antislash |
|
Si vous ne souhaitez pas utiliser de caractères d’échappement, alors vous
pouvez déclarer une chaîne de caractères brut (raw string) en préfixant
la chaîne avec la lettre r
. Ainsi la chaîne de caractères :
"\t\n"
correspond à deux caractères : une tabulation suivie d’un retour à la ligne. Tandis que la chaîne de caractères :
r"\t\n"
correspond à quatre caractères : antislash, t, antislash et n.
Si vous voulez écrire une chaîne de caractères sur plusieurs lignes, vous pouvez
utiliser le caractère antislash \
suivi immédiatement d’un retour à la ligne.
Ces caractères ne seront pas considérés comme faisant partie de la chaîne finale.
"Une chaîne de caractères\
sur plusieurs lignes en\
utilisant l'antislash"
correspond à :
"Une chaîne de caractères sur plusieurs lignes en utilisant l'antislash"
Sinon vous pouvez utiliser le triple guillemet """"
qui permet de créer
une chaîne de caractères sur autant de lignes que l’on souhaite sans avoir
besoin de spécifier l’antislash. Mais attention, les retours à la ligne
seront présents dans la chaîne de caractères.
"""Une chaîne de caractères
sur plusieurs lignes en
utilisant le triple guillemet"""
correspond à :
"Une chaîne de caractères\nsur plusieurs lignes en\nutilisant le triple guillemet"
Une variable contenant une chaîne de caractères et de type str. L’opérateur
+
, appelé opérateur de concaténation, permet de créer une nouvelle chaîne
à partir de deux chaînes accolées l’une à l’autre :
>>> h = "hello"
>>> w = "world"
>>> h + " " + w
"hello world"
Formatage de chaîne de caractères¶
Pour afficher une information à l’écran, il est souvent nécessaire de prendre des informations telles que des nombres et les insérer suivant un certain format dans une chaîne de caractères.
On peut indiquer dans une chaîne de caractères l’emplacement où la valeur d’une
variable doit être insérée grâce au caractère %
suivi d’une lettre indiquant
le type de la variable :
%d |
Nombre entier en base 10 |
%i |
Nombre entier en base 10 |
%o |
Nombre entier en base 8 |
%x |
Nombre entier en base 16 (lettres en minuscule) |
%X |
Nombre entier en base 16 (lettres en majuscule) |
%f |
Nombre réel |
%s |
Chaîne de caractères |
On utilise l’opérateur %
après la chaîne de caractères pour spécifier la ou
les variables à utiliser. S’il y en a plusieurs, il faut obligatoirement les
signaler dans le bon ordre entre parenthèses et séparées par une virgule.
>>> total = 122
>>> "Le montant de la facture est de %d euros avec une TVA de 20.0%%" % total
'Le montant de la facture est de 122 euros avec une TVA de 20.0%'
>>> "%s le %s" % ("hello", "monde")
'hello le monde'
Astuce
Pour écrire le caractère % dans la chaîne, il faut écrire %%
.
Note
Pour plus d’information sur le formatage, reportez-vous à la documentation
complète
.
Depuis Python 3.6, il est possible d’utiliser le formatage de chaîne de caractères
en préfixant la chaîne par f
. Le motif défini par la chaîne peut contenir
entre accolade {}
le nom d’une variable dont la valeur sera insérée à cet emplacement.
>>> code_facture = "XF32"
>>> montant = 122.55
>>> f"La facture n°{code_facture} a un montant de {montant} euros"
'La facture n°XF32 a un montant de 122.55 euros'
Note
Pour plus d’information sur le formatage, reportez-vous à la documentation
complète
.
Exercice¶
Exercice : formater des chaînes de caractères
Avec les variables suivantes :
produit = "Aspi Deluxe"
code = "AS0003"
prix_ht = 253.99
garantie = 2
tva = prix_ht * .20
Formater les chaînes de caractères pour produire les résultats suivants :
'Produit du mois : Aspi Deluxe'
'AS0003 - Aspi Deluxe garanti 2ans'
' AS0003 - Aspi Deluxe'
'AS0003 - Aspi Deluxe : 253.99€ HT'
'AS0003 - Aspi Deluxe : 304.79€ TTC'
'AS0003 - Aspi Deluxe : 0000304.79€ TTC'
Utilisez le formatage old-school et le nouveau formatage de chaînes.
Le type booléen¶
Un type booléen accepte deux valeurs : True
et False
. Les valeurs
booléennes peuvent être utilisées avec les opérateurs logiques : not
,
and
et or
.
>>> a = True
>>> b = False
>>> not a
False
>>> not b
True
>>> a and b
False
>>> a and not b
True
>>> a or b
True
>>> not a or b
False
Il existe des opérateurs de comparaison pour les nombres qui produisent un résultat de type booléen :
== |
égalité |
!= |
inégalité |
< |
inférieur |
> |
supérieur |
<= |
inférieur ou égal |
>= |
supérieur ou égal |
>>> 1 == 2
False
>>> 1 != 2
True
>>> 1 < 2
True
>>> 1 > 2
True
>>> 1 <= 1
True
>>> 2 > 1
True
>>> 2 >= 2
True
Les chaînes de caractères acceptent également les mêmes opérateurs pour réaliser une comparaison caractère par caractère :
>>> "Hello World" == "Hello World"
True
>>> "Hello World" != "hello world"
True
>>> "Hello" < "Hello World"
True
>>> "Hello World" > "Hello"
True
Astuce
La comparaison entre chaînes de caractères est basée sur le nombres de caractères mais également sur le code des caractères. Ainsi :
>>> 'a' < 'z'
True
>>> 'a' > 'A'
True
Il est possible d’écrire des expressions booléennes complexes :
>>> x = 1
>>> y = 2
>>> message = "Bonjour à tous"
>>> x * 2 == y and message > "Bonjour"
True
>>> -1 < x < y
True