Variables et affectations#
Dans la feuille sur les valeurs et types, nous avons effectué des calculs et observé les résultats (type, valeur). Pour écrire des programmes, nous aurons besoin de mémoriser les résultats intermédiaires dans des variables pour en réutiliser les valeurs.
Exercice
En utilisant une expression comme dans la feuille précédente, calculez l” énergie cinétique (kinetic energy) \(\frac12 m v^2\) d’un objet de masse \(14,5\) kg allant à \(100\) m/s:
### BEGIN SOLUTION
1. / 2 * 14.5 * 100**2
### END SOLUTION
72500.0
Exercice (suite)
Calculez de même l’énergie cinétique du même objet allant à \(10\) m/s :
### BEGIN SOLUTION
1. / 2 * 14.5 * 10**2
### END SOLUTION
725.0
Exercice (suite)
ou à \(1000\) m/s :
### BEGIN SOLUTION
1. / 2 * 14.5 * 1000 * 1000
### END SOLUTION
7250000.0
Exercice (suite)
Qu’est-ce qui n’est pas satisfaisant dans cette façon de procéder?
Réponse
Vous avez probablement dû réécrire plusieurs fois la valeur de la masse et de la vitesse. Pour éviter cela, on souhaiterait mémoriser ces valeurs pour pouvoir les réutiliser.
Les variables#
Lorsque l’on programme, il est souvent nécessaire de mémoriser une valeur, afin de pouvoir la réutiliser plus tard : un nombre, un nom d’utilisateur, des tickets d’avion encore disponibles, le jour de la semaine, un inventaire, etc. Pour cela on peut lui donner un nom en utilisant une variable.
Par exemple, dans la cellule suivante, nous utilisons deux variables v
et m
pour
nommer la valeur de la masse et de la vitesse de l’objet, puis nous utilisons ces noms
pour calculer son énergie cinétique :
m = 14.5
v = 1000
1. / 2 * m * v**2
7250000.0
Réutilisez la cellule précédente pour calculer l’énergie cinétique selon que la vitesse de l’objet est de \(1\), \(10\), \(100\), ou \(1000\) m/s.
Remarque
Avec des variables, non seulement il n’a plus été nécessaire d’écrire la même valeur plusieurs fois, mais l’expression gagne en lisibilité en utilisant des notations proches de la formule de physique.
Définition : Variables
Une variable (variable) en Python est constituée de deux éléments : son nom ou identificateur (identifier) et sa valeur actuelle. Elle peut être pensée comme une étiquette que l’on peut attacher à une valeur à l’aide d’une affectation.
Définition : Affectation
Syntaxe
identificateur = expression
Sémantique
Calcule (ou évalue) la valeur de l’expression.
Attache cette valeur à la variable dont le nom est donné par l’identificateur.
Conserve ensuite la valeur en mémoire tant que la variable existe et n’a pas été réaffectée.
Exemple
Après l’affectation a = 1
, la valeur 1 a une étiquette a
:

Lors de la nouvelle affectation a = 3 - 1
, tout d’abord une nouvelle valeur 2
est
créée:


puis l’étiquette a
est rattachée sur cette nouvelle valeur:


Notez que la valeur 1
d’origine n’a plus d’étiquette a
, et n’est donc plus accessible
depuis cette étiquette.
L’affectation b = a
aura alors pour effet d’attacher une nouvelle étiquette à la valeur
2
:

Voir aussi
Référence La métaphore des étiquettes et les images ci-dessus sont tirées de Code like a Pythonista: Idiomatic Python de David Goodger.
La première affectation à une variable s’appelle aussi son
initialisation (initialisation).
Tant qu’une variable n’a pas été initialisée, elle ne peux pas être utilisée car elle
n’existe pas. Ainsi, si l’on exécute la cellule suivante, une erreur est déclenchée
indiquant que la variable c
n’est pas définie :
c
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[5], line 1
----> 1 c
NameError: name 'c' is not defined
Exemple
Affectons la valeur 3
à la variable a
.
a = 3
On peut maintenant réutiliser cette valeur, seule ou dans toute expression :
a
3
a + 1
4
a + a + a
9
On peut aussi modifier la valeur de a
:
a = 5
a
5
a = a + 1
a
6
Que se passe-t-il si l’on exécute à nouveau la dernière cellule? Si on exécute alternativement les deux dernières cellules?
Remarque sur Jupyter
contient la dernière valeur que vous lui avez affectée. L’ordre d’exécution des cellules est indiqué entre crochets dans la marge de gauche.
Exercice
La cellule suivante déclare les variables pi
et r
. Utilisez-les pour calculer l’aire
et le périmètre d’un disque de rayon r
pour les différentes valeurs données ci-dessous.
Pour simplifier, vous pourrez considérer que la variable pi
contient la valeur exacte
du nombre bien connu. Utilisez les cellules vides pour faire vos calculs. N’oubliez pas
d’exécuter aussi les cellules qui changent la valeur de r
.
pi = 3.1415
r = 5
Aire :
### BEGIN SOLUTION
pi * r * r
### END SOLUTION
78.53750000000001
Périmètre :
### BEGIN SOLUTION
2 * pi * r
### END SOLUTION
31.415000000000003
r = 2.5
Aire :
### BEGIN SOLUTION
pi * r * r
### END SOLUTION
19.634375000000002
Périmètre :
### BEGIN SOLUTION
2 * pi * r
### END SOLUTION
15.707500000000001
r = 10
Aire :
### BEGIN SOLUTION
pi * r * r
### END SOLUTION
314.15000000000003
Périmètre :
### BEGIN SOLUTION
2 * pi * r
### END SOLUTION
62.830000000000005
Exercice (suite)
La cellule suivante commence par définir deux variables b
et c
.
Complétez la cellule avec un programme qui échange les valeurs de b
et c
. Ce
programme ne devra utiliser que des affectations et, si utile, une ou des nouvelles
variables. Il ne devra pas utiliser directement les valeurs \(5\) et \(8\).
Indication
Imaginez que vous tenez une pomme dans la main gauche et une orange dans la main droite. Comment feriez vous pour les échanger?
# Ne pas changer les deux lignes suivantes
b = 5
c = 8
### BEGIN SOLUTION
temp = b
b = c
c = temp
### END SOLUTION
b # doit afficher 8 (ancienne valeur de c)
8
c # doit afficher 5 (ancienne valeur de b)
5
### BEGIN HIDDEN TESTS
assert( b == 8 )
assert( c == 5 )
### END HIDDEN TESTS
Indication
Aparté : Les commentaires en python
En Python, le symbole #
(dièse) marque le début d’un
commentaire (comment). Ce
caractère ainsi que toute la suite de la ligne qui le contient est alors ignoré quand le
programme est exécuté. Par exemple, dans la cellule précédente, le texte
# doit afficher 5 (ancienne valeur de b)
ne sera pas pris en compte dans l’exécution du
programme.
Les commentaires sont des notes du programmeur qui apportent des informations complémentaires pour le lecteur.
Quelques raccourcis pratiques
Syntaxe |
Sémantique |
Syntaxe équivalente |
---|---|---|
|
Incrémenter |
|
|
Décrémenter |
|
|
Multiplier |
|
|
Diviser |
|
Conclusion#
Dans cette feuille, nous avons introduit la notion de variable pour mémoriser des valeurs afin de les réutiliser ultérieurement, ainsi que pour améliorer la lisibilité des programmes. Il nous reste à pointer deux points d’attention. D’une part, il convient de ne pas confondre affectation et égalité, qui ont des syntaxes proches, mais des sémantiques très différentes.
Attention
Affectation et égalité : deux concepts différents
L’affectation
x = 5
est une instruction modifiant l’état de la mémoire.Le test d’égalité
x == 5
est une expression booléenne (valeur vrai ou faux) dont la valeur est «x
est égal à5
? ». Autrement dit : est-ce que la valeur contenue dans la variablex
est égale à5
?
D’autre part, si vous avez déjà programmé dans d’autres langages que Python, la sémantique des variables y était peut-être différente.
Aparté : Les variables dans d’autres langages de programmation.
De nombreux langages de programmation (comme C++ par exemple) suivent un modèle différent
pour les variables : ces dernières peuvent être pensées comme des boîtes contenant une
valeur. Ainsi, après l’affectation a=1
, la boîte a
contient l’entier 1 :

Affecter une autre valeur à la même variable, comme avec a = 3 - 1
, remplace le contenu
de la boîte :

L’affectation b = a
a alors pour effet de copier la valeur 2
dans la boîte b
:

