Les variables permettent de garder en mémoire les résultats d'un calcul ou d'une opération. Une variable peut être vue comme une « boîte » dans laquelle on peut stocker des nombres, des chaînes voire des objets plus complexes que nous allons manipuler par la suite.
En Python, les noms de variables doivent commencer avec une lettre (majuscule ou minuscule) ou un tiret bas et ne peuvent être composés que de lettres (majuscules ou minuscules), de tirets bas et/ou de chiffres. Les exemples suivants sont donc des noms de variables valides :
nom_utilisateur
_motdepasse
contenu_article
menu_2
laMeilleureVariable
En revanche, ces noms ne sont pas valides :
est-ce-ok?
(contient des tirets et un point d'interrogation)2valeurs
(le nom ne commence pas par un tiret bas ou par une lettre).
Pour commencer à utiliser une variable, il suffit de lui affecter une valeur. Pour ce faire, on écrit le nom d'une variable puis le signe égal (=
) et enfin la valeur (ou l'expression) qu'on souhaite affecter à la valeur.
>>> x = 42 >>> somme = 30 + 5
Pour vérifier le contenu d'une variable, on peut utiliser l'interpréteur en mode interactif. Il suffit de saisir le nom de la variable et d'appuyer sur la touche Entrée.
>>> x 42 >>> somme 35
Les variables peuvent être utilisées dans des expressions.
>>> somme_moins_x = somme - x >>> somme_moins_x -7
Bien entendu, si les variables sont des chaînes de caractères ou des nombres, il est possible de les afficher dans la console avec la fonction print
.
>>> print(somme) 35
Maintenant qu'on a une meilleure idée de ce que sont les variables, on peut utiliser la fonction input
. Celle-ci permet d'afficher un message et renvoi le texte saisi par l'utilisateur suite à ce message. Par exemple, si on souhaite demander le nom de quelqu'un dans l'interpréteur, on pourra utiliser les instructions suivantes :
>>> nom = input("Quel est votre nom ? ") Quel est votre nom ? Jean >>> print("Bonjour " + nom) Bonjour Jean
Cet exemple illustre différents nouveaux concepts. Voyons en détails ce qui se passe.
Tout d'abord, la fonction input
prend un paramètre qui sera le texte affiché pour l'utilisateur. Ici, l'instruction demande le nom de l'utilisateur. On voit ici qu'il y a un espace après le point d'interrogation. Si on ne place pas cet espace ici, lorsqu'on saisira du texte après la question, le texte sera affiché immédiatement après le point d'interrogation et le résultat obtenu ne sera pas agréable (vous pouvez tester pour voir la différence).
Ensuite, on affecte le résultat renvoyé par la fonction input
(ce que l'utilisateur a tapé) à la variable nom
. On notera qu'input
arrête de lire les entrées de l'utilisateur dès qu'il appuie sur la touche Entrée.
Une fois que l'utilisateur appuie sur la touche Entrée, on affiche le message "Bonjour " suivi du nom écrit par l'utilisateur. On voit ici que, lorsqu'on manipule des chaînes de caractères, le symbole plus (+
) est utilisé pour concaténer deux chaînes de caractères. Nous verrons une meilleure façon de faire dans un autre tutoriel.
Passons à un autre exemple. Demandons à un utilisateur de saisir deux nombres puis affichons le résultat.
>>> a = input("Écrivez le premier nombre : ") Écrivez le premier nombre : 10 >>> b = input("Écrivez le deuxième nombre : ") Écrivez le deuxième nombre : 23 >>> somme = a + b >>> print("Leur somme vaut " + somme) Leur somme vaut 1023
Oh ! Nous avions oublié de préciser qu'input
renvoie une chaîne de caractères (et non un nombre) !
Une chaîne de caractères n'est pas la même chose qu'un nombre. Ainsi, la chaîne "42" n'est pas la même chose que le nombre 42. La chaîne "42" est en fait le caractère '4
' suivi par le caractère '2
'. L'interpréteur Python ne fait pas de différence entre une chaîne qui contiendrait uniquement des nombres et une chaîne qui contiendrait uniquement des caractères. Ainsi, de la même façon qu'il aurait concaténé "Hello
" et "World
", il concatène "10" et "23" en "1023".
Heureusement, il existe une fonction pour éviter ce piège : int
. La fonction int
prend une chaîne de caractères en entrée et la convertit en un nombre.
>>> int("42") 42
On voit dans cet exemple qu'il n'y a pas de quotes autour du résultat. Corrigeons-donc le programme précédent.
>>> a = input("Écrivez le premier nombre : ") Écrivez le premier nombre : 10 >>> b = input("Écrivez le deuxième nombre : ") Écrivez le deuxième nombre : 23 >>> somme = int(a) + int(b) >>> print("Leur somme vaut " + somme) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't convert 'int' object to str implicitly
Encore une erreur ! Ne vous inquiétez pas si vous ne comprenez pas ce qu'affiche l'interpréteur. Nous verrons comment reconnaître et gérer ce genre de situations lorsque nous aborderons les exceptions dans notre prochain tutoriel.
Qu'est-ce qui pose problème ? Eh bien, il est impossible de concaténer une chaîne de caractères ("Leur somme vaut ") et un entier. Nous avons donc converti les chaînes en entiers pour pouvoir les additionner mais il faut reconvertir la somme en une chaîne de caractères. Là encore, il existe une fonction qui permet de faire ça : str
, cette dernière prend en entrée une valeur et renvoie le résultat de sa conversion en une chaîne de caractères. Voici la troisième version de notre programme :
>>> a = input("Écrivez le premier nombre : ") Écrivez le premier nombre : 10 >>> b = input("Écrivez le deuxième nombre : ") Écrivez le deuxième nombre : 23 >>> somme = int(a) + int(b) >>> print("Leur somme vaut " + str(somme)) Their sum is 33
Voilà qui est mieux.
Vous êtes peut être en train de vous demander ce qui se produit lorsqu'on utilise une chaîne de caractères qui ne peut être convertie en nombre avec la fonction int
. Si vous n'avez pas déjà testé un exemple dans l'interpréteur, en voici un :
>>> int("banane") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'banane'
Encore une fois, cela ne lui plaît pas et on retrouve une erreur semblable à celle qu'on avait rencontré plus haut. Nous verrons les concepts d'erreur et d'exceptions plus tard dans cette série de tutoriels.