1: Variables

Les variables ont un rôle de "lieu de stockage" pour les données dans un programme. Elles sont un moyen de nommer les informations pour une utilisation postérieure.

Chaque variable a un nom ; un exemple de nom de variable que nous utiliserons est monNombreChanceux. Pour stocker de l'information dans une variable, nous écrivons une commande en utilisant le signe égal (=) dans la manière suivante :

« le nom de la variable » = « la valeur que nous voulons stocker »
(Nous utilisons les « guillemets doubles » dans nos leçons pour indiquer des parties particulière dans nos expressions.)

Par exemple, la ligne Python

monNombreChanceux = 13
stocke la valeur 13 dans la variable monNombreChanceux. Ensuite, partout où vous écrirez le nom de variable monNombreChanceux à nouveau, Python replacera cette variable par la valeur stockée.

Vous trouverez ci-dessous un court exemple d'utilisation des variables. Cet exemple possède plus d'une ligne d'instructions : Python exécute la première ligne, puis la deuxième, et ainsi de suite jusqu'à ce qu'il atteigne la dernière ligne. Appuyez sur Exécuter le programme pour voir ce qu'il fait.

Exemple
Exemple d'utilisation d'un variable.

Regardez les 5 lignes du programme dans l'ordre et comment elles correspondent à la sortie. Comme vous pouvez le voir, monNombreChanceux conserve la valeur 13 pour les deux premières instructions, puis sa valeur est changée à 7.

Nous avons aussi introduit l'opérateur plus (+) ci-dessus, opérateur qui additionne deux nombres. De la même manière, il y a des opérateurs pour la soustraction (-), la multiplication (*) et la division (/). Nous y reviendrons dans une prochaine leçon.

Vous pouvez simuler la mémoire de stockage d'un ordinateur avec du papier et un crayon, en suivant à la trace la valeur des variables dans une table. Voici un exemple ; souvenez-vous que * signifie la multiplication en Python.

But : déterminez les valeurs finales de toutes les variables à la fin du programme.

premier = 2
deuxieme = 3
troisieme = premier * deuxieme
deuxieme = troisieme - premier
premier = premier + deuxieme + troisieme
troisieme = deuxieme * premier
Idée : Nous utilisons une table pour garder trace des valeurs au fur et à mesure qu'elles changent. Défilez jusqu'en bas pour voir le résultat final.

instruction valeur après que l'instruction soit exécutée
premier deuxieme troisieme
premier = 2 2
deuxieme = 3 2 3
troisieme = premier * deuxieme 2 3 6
deuxieme = troisieme - premier 2 3 4 6
premier = premier + deuxieme + troisieme 2 12 4 6
troisieme = deuxieme * premier 12 4 6 48

Donc, à la fin du programme, la valeur de premier est 12, celle de deuxieme est 4 et celle de troisieme est 48.

Essayez l'outil Python3 visualisation pour voir des programmes comme celui-ci s'exécuter virtuellement pas à pas. Nous vous le recommandons comme ressource utile quand vous êtes confus quant à ce que Python est en train de faire, ou quand vous êtes bloqués avec le débogage. Vous trouverez ce lien à la page des Ressources.

Voici un court exercice à propos des variables.

Exercice à réponse courte : x factor

Quelle est la valeur de x après que ces commandes aient été exécutées ?

x = 10
x = x + x
x = x - 5
Correct !

Deux erreurs fréquentes

Si vous demandez à Python d'utiliser une variable qui n'est pas définie, vous obtenez une erreur.

Exemple : Une variable non définie

Comme vous pouvez le constater, nous obtenons un message d'erreur disant  NameError: name 'trouble' is not defined. Quelquefois, de telles erreurs sont dues à des erreurs de frappes : si vous définissez une variable adresse=32, et ensuite print(adrese), le même type d'erreur est généré.

Un autre type d'erreur est généré si vous inversez le sens de l'instruction =.

Exemple : SyntaxError: can't assign to literal

La première ligne est bien mais la deuxième génère une erreur : Python pense que le deuxième ligne 4 = x essaye de changer la valeur de 4 mais vous n'êtes autorisé qu'à changer la valeur d'une variable, et 4 n'est pas une variable. Si A = B et B = A représentent la même chose en mathématiques, ce n'est pas le cas en programmation.

Exercice

Ceci est un réchauffement pour vous familiariser avec les variables.

Exercice de code : L'anatomie Python

Ecrivez un extrait de code (une petite partie d'un programme Python) qui compte les têtes, les épaules, les genoux et les orteils à une fête. Le correcteur va automatiquement définir une variable personnes pour vous, elle contiendra le nombre de personnes à la fête. Votre code doit définir quatre variables, une appelée tetes, une appelée epaules, une appelée genoux et une appelée orteils, égales au nombre de têtes, épaules, genoux et orteils à la fête. Votre programme ne doit pas générer de sortie. Cliquez ici pour un indice.

Code mêlé

Le prochain point de cette leçon est un nouveau type d'exercice de programmation, dans lequel vous n'aurez pas à programmer. Nous vous fournirons le programme correct mais l'astuce est que les lignes ont été mélangées. Vous devez déplacer les lignes de code afin de les réarranger en un programme correct.

Exercice mêlé : Calculette vitesse
Vous assistez à une course cycliste qui monte et descend une colline. Le correcteur automatique définira quatre variables pour vous : distanceMontee et distanceDescente donnent la distance (en km) des deux parties de la course, et tempsMonte et tempsDescent donne le temps (en minutes) du temps pris pour compléter chaque partie de la cours. Ecrivez un programme qui indique la vitesse moyenne (en km/min) pour toute la course.
Cliquez et glissez avec la souris pour réarranger les lignes.
Cliquez ici pour un indice si vous êtes bloqué 
  • distanceTotale = distanceMontee + distanceDescente
  • print(vitesseMoyenne)
  • vitesseMoyenne = distanceTotale / tempsTotal
  • tempsTotal = tempsMonte + tempsDescent

Programme d'échange

Voici le dernier exercice de cette leçon.

Exercice de code : Programme d'échange
Ecrivez un programme pour inverser les valeurs de deux variables. Le correcteur va automatiquement définir les variables x et y pour vous, avec des valeurs numériques. Vous devez écrire le code qui va échanger leurs valeurs : la valeur de x après que votre code soit exécuté doit être égale à la valeur que y avait avant que votre code s'exécute, et la valeur de y après que votre code s'exécute doit être celle de x avant que votre code s'exécute. Votre programme ne doit pas générer de sortie.
La solution la plus fréquemment utilisée avec Python est courte mais difficile à trouver. Cliquez sur chaque indice si vous voulez les lire. 

Indice, partie 1
Vous n'avez pas besoin d'utiliser d'arithmétique (+-*/) pour résoudre ce problème. Vous avez seulement besoin des variables et de l'instruction =. Vous pouvez définir de nouvelles variables avec des noms à choix si vous en avez besoin.
Indice, partie 2
Nous avons deux buts : mettre la valeur originale de y dans x, et mettre la valeur originale de x dans y. Si tout ce que nous voulions faire était le premier but (en d'autres termes mettre la valeur de y dans x), nous pourrions utiliser le programme d'une ligne

x = y
Comment peut-on atteindre ces deux buts en même temps ?
Indice, partie 3
Le programme suivant peut paraître nous rapprocher du but,

x = y
y = x
Mais il y a un problème. Par exemple, disons que le correcteur commence par définir x égal à 10 et y égal à 99. Si on exécute le programme de deux lignes ci-dessus, après le première ligne, à la fois x et y sont égaux à 99. Le seconde ligne n'a pas d'effet. Vous pouvez soumettre cette solution au correcteur pour voir par vous-même ce qui se passe. Comment peut-on garder la valeur originale de x quelque part pour pouvoir la mettre dans y plus tard ?
Indice, partie 4
Votre première ligne devrait être quelque chose comme xOriginal = x, pour stocker la valeur original de x. Ensuite, vous pouvez attribuer x = y. Et enfin, attribuer à y la valeur original de x.
Indice, partie 5
Cliquez pour lire une page Wikipedia qui donne du psuedo-code (dans un autre langage) pour échanger deux valeurs. Voici un lien vers une deuxième methode qui utilise l'arithmétique de manière futée mais qui ne marche qu'avec des nombres et pas du texte.

Une fois que cet exercice est correct, vous êtes prêt à passer à la prochaine leçon. Cliquez Suivant ci-dessous.