Variables et affectations

Variables et affectations#

Dans la feuille précédente, 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

  1. 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
### BEGIN SOLUTION
1. / 2 * 14.5 * 10**2
### END SOLUTION
725.0
### BEGIN SOLUTION
1. / 2 * 14.5 * 1000 * 1000 
### END SOLUTION
7250000.0

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

  1. Calcule (ou évalue) la valeur de l’expression.

  2. Attache cette valeur à la variable dont le nom est donné par l’identificateur.

  3. 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:

la valeur `1` avec une étiquette `a`

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

À faire

Ajouter un dessin après la création de la valeur 2.

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

la valeur `1` sans étiquette
la valeur `2` avec une étiquette `a`

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 :

la valeur `2` avec deux étiquettes `a` et `b`

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?

Indication

Remarque sur Jupyter L’ordre dans lequel vous exécutez les cellules est important, la variable 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

La cellule suivante définit deux variables b et c :

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

x += a

Incrémenter x de a

x = x + a

x -= a

Décrémenter x de a

x = x - a

x *= a

Multiplier x par a

x = x * a

x /= a

Diviser x par a

x = x / a

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 variable x 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.

Revenir à la page d’accueil