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.
### BEGIN SOLUTION
1.0 / 2 * 14.5 * 100**2
### END SOLUTION72500.0### BEGIN SOLUTION
1.0 / 2 * 14.5 * 10**2
### END SOLUTION725.0### BEGIN SOLUTION
1.0 / 2 * 14.5 * 1000 * 1000
### END SOLUTION7250000.0Ré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.0 / 2 * m * v**27250000.0Ré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.
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 :

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.
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 definedAffectons la valeur 3 à la variable a.
a = 3On peut maintenant réutiliser cette valeur, seule ou dans toute expression :
a3a + 14a + a + a9On peut aussi modifier la valeur de a :
a = 5a5a = a + 1a6Que se passe-t-il si l’on exécute à nouveau la dernière cellule? Si on exécute alternativement les deux dernières cellules?
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.
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 = 5Aire :
### BEGIN SOLUTION
pi * r * r
### END SOLUTION78.53750000000001Périmètre :
### BEGIN SOLUTION
2 * pi * r
### END SOLUTION31.415000000000003r = 2.5Aire :
### BEGIN SOLUTION
pi * r * r
### END SOLUTION19.634375000000002Périmètre :
### BEGIN SOLUTION
2 * pi * r
### END SOLUTION15.707500000000001r = 10Aire :
### BEGIN SOLUTION
pi * r * r
### END SOLUTION314.15000000000003Périmètre :
### BEGIN SOLUTION
2 * pi * r
### END SOLUTION62.830000000000005La 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 SOLUTIONb # doit afficher 8 (ancienne valeur de c)8c # doit afficher 5 (ancienne valeur de b)5### BEGIN HIDDEN TESTS
assert b == 8
assert c == 5
### END HIDDEN TESTSEn Python, le symbole # (dièse) marque le début d’un commentaire. 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.
| 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.
L’affectation
x = 5est une instruction modifiant l’état de la mémoire.Le test d’égalité
x == 5est une expression booléenne (valeur vrai ou faux) dont la valeur est «xest égal à5? ». Autrement dit : est-ce que la valeur contenue dans la variablexest é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 :

