Variables et affectation
Variables
L'informatique désigne le traitement automatique de l'information1. Dans les programmes informatiques, l'information est représentée par des données.
Cours
Les programmes informatiques manipulent des données en utilisant des variables. Une variable permet d'associer un nom à une valeur.
Une variable informatique peut se concevoir comme une sorte de “boite” étiquetée avec un nom, dans laquelle un programme enregistre une valeur pour la consulter ou la modifier pendant son exécution2.
En Python, comme dans la plupart des langages informatiques, le nom d'une variable :
- s'écrit en lettres minuscules («
a
» à «z
») et majuscules («A
» à «Z
») et peut contenir des chiffres («0
» à «9
») et le caractère blanc souligné («_
») ; - ne doit pas comporter d'espace, de signes d'opération «
+
», «-
», «*
» ou «/
», ni de caractères spéciaux comme des signes de ponctuation «'
», «"
», «,
», «.
», «:
», «@
», etc. ; - ne doit pas commencer par un chiffre ;
- ne doit pas être un mot réservé de Python, par exemple «
for
», «if
», «print
», etc. ; et - est sensible à la casse, ce qui signifie que les variables «
TesT
», «test
» ou «TEST
» sont différentes.
En pratique cela permet d'éviter les noms de variable réduits à une lettre et d'utiliser des noms qui ont un sens !
PEP 8
La PEP 8 3 donne un grand nombre de recommandations de style pour écrire du code Python agréable à lire et recommande en particulier de nommer les variables par des mots en minuscule séparés par des blancs soulignés (_
) 4, par exemple d'appeler une variable somme_des_nombres
plutôt que s
dans un programme qui additionne des nombres.
Types de variable
Cours
Les variables peuvent être de types différents en fonction des données qu'elles représentent.
Les principaux types de variable sont :
- les nombres entiers (type
int
) ; -
les nombres décimaux, appelés « flottants » (type
float
) qui s'écrivent toujours avec un point (le séparateur décimal est un point, pas une virgule), par exemple
5.0
.Noter que
.5
et5.
permettent d'écrire rapidement les flottants0.5
et5.0
et que2e5
ou2E5
(pour \(2 \times 10^5\)) permettent d'écrire le nombre flottant200000.0
; -
les booléens prenant seulement les valeurs
True
ouFalse
(typebool
) ; - les textes ou chaines des caractères (type
str
) écrits entre une paire de guillemets ("
) ou d'apostrophes ('
) ; - d'autres types dits "construits" comme les p_uplets, tableaux, dictionnaires5, etc.
Affectation
Cours
L'affectation consiste à donner une valeur à une variable. En Python, comme dans la plupart des langages informatiques, l'affectation d'une valeur à une variable est représentée par le signe « =
».6
Par exemple, saisir les commandes suivantes dans la console Python permet d'affecter les valeurs 3 (type int
), 3.0 (type float
) et "3" (type str
) à des variables nommées respectivement a
, b
et c
:
La console Python, ou interpréteur Python, est un moyen rapide d'exécuter des commandes. Il suffit de taper une instruction en réponse à l'invite >>>
puis d'appuyer sur la touche « Entrée » pour lancer son exécution.
PEP 8
Mettre des espaces autour d'un égal (=
).
En Python, c'est l'affectation qui définit le type d'une variable7.
C'est bien la valeur qui se trouve à droite du signe «
=
» qui est affectée à la variable à gauche, et pas dans l'autre sens.
PEP 8
Mettre un espace après une virgule (,
) , mais pas avant.
Il est aussi possible d'affecter des valeurs à plusieurs variables en même temps :
et d'affecter la valeur d'une variable à une autre variable, par exemple :
Quand on tape le nom d'une variable dans la console, elle affiche sa valeur.
Il n'est pas possible d'utiliser une variable avant de lui avoir affecté une valeur.
>>> d
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
NameError: name 'd' is not defined
Exercice corrigé
On affecte les valeurs 5 et 6 (de type int
) à deux variables nommées respectivement a
et b
:
a
et de b
(sans utiliser les chiffres 5, 6 ou tout autre chiffre).
Réponse
-
Voyons d'abord la solution qui ne fonctionne pas :
Cette solution ne fonctionne pas car la valeur intiale dea
, c'est-à-dire 5, est perdue quand on écrita = b
, on dit qu'elle est "écrasée" par la valeur deb
. Ensuite quand on écritb = a
on affecte la nouvelle valeur dea
, c'est-à-dire 6 au lieu de 5, àb
. -
Une première solution consiste donc à utiliser une autre variable pour conserver la valeur intiale de
Et ensuite de faire l'échange : Notons que la dernière instruction affecte la valeur dea
temporairement, appelons latemp
:temp
, c'est-à-dire 5, àb
, et pas la valeur dea
puisqu'elle vaut 6 à ce moment là. -
Une deuxième solution plus élégante consiste à utiliser l'affectation de plusieurs variables sur une seule ligne :
-
Il existe aussi une troisième solution un peu plus compliquée, qui n'utilise ni variable temporaire, ni affectation de plusieurs variables en une seule ligne :
-
Le terme « informatique » résulte de l'association du terme « information » au suffixe « -ique » signifiant « qui est propre à ». ↩
-
La notion de variable en informatique diffère des mathématiques. En mathématique une variable apparait dans l'expression symbolique d'une fonction \(f(x)=2x+3\), ou dans une équation \(2x+3=5x-3\) pour désigner une inconnue qu'il faut trouver, ou encore dans une formule comme \((a+b)² =a²+2ab+b²\) pour indiquer que l'égalité est vraie pour toutes les valeurs de \(a\) et \(b\). ↩
-
Une PEP (pour Python Enhancement Proposal) est un document fournissant des informations à la communauté Python, ou décrivant une nouvelle fonctionnalité. En particulier la PEP 8 décrit les conventions de style de code agréable à lire. ↩
-
Le style qui consiste à nommer les variables par des mots écritsen minuscule séparés par des blancs soulignés, par exemple
somme_des_nombres
, est appelé « snake case » en opposition au style qui consiste à écrire les mots attachés en commençant par des majuscules, par exempleSommeDesNombres
, appelé « camel case ». ↩ -
Les p_uplet, tableaux, dictionnaires sont étudiés dans un autre chapitre du programme de 1ère. ↩
-
En algorithmique, l'affectation est symbolisée par une flèche allant de la valeur (à droite) vers le nom de la variable (à gauche), par exemple \(a←3\) pour affecter la valeur \(3\) à la variable \(a\). ↩
-
Python est un langage de typage dynamique, ce n'est pas le cas de nombreux langages comme le C ou le C++ qui forcent à définir le type d'une variable et à le conserver au cours de la vie de la variable, ils sont de typage statique. Exemple d'affectation en C :
↩