Le monde merveilleux des variables

    Publicités

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)

Superman

V
Ancien staff
Dec 2, 2009
2,489
0
596
C'est quoi, des variables ? Et à quoi ça sert ?

Les variables sont l'un des concepts qui se retrouvent dans la majorité (si ce n'est la totalité) des langages de programmation. Autant dire que sans variable, on ne peut pas programmer, sans exagération.

C'est quoi, des variables ?


Une variable est une donnée de votre programme. C'est un code alpha-numérique que vous allez lier à une donnée de votre programme, pour pouvoir l'utiliser à plusieurs reprises et faire des calculs un peu plus intéressants dessus. C'est bien joli de savoir faire des opérations, mais si on ne peut pas même stocker le résultat, ça devient très vite ennuyeux.

Comment ça marche ?


Le plus simplement du monde. Vous allez dire à Python : je veux que dans une variable que je nomme age tu stockes mon âge, pour que je puisse le retenir (si j'ai la mémoire très courte), l'augmenter (à mon anniversaire) et l'afficher si besoin est.

Comme je vous l'ai dit, on ne peut passer à côté des variables. Vous ne voyez peut-être pas encore tout l'intérêt de stocker des informations de votre programme et pourtant, si vous ne stockez rien, vous ne pouvez pratiquement rien faire.

En Python, pour donner une valeur à une variable, il suffit d'écrire nom_de_la_variable = valeur .

Une variable respecte quelques règles de syntaxe incontournables :


  1. Le nom de la variable n'est composé que de lettres, majuscules ou minuscules, de chiffres et du symbole souligné (underscore en anglais) "_". Les caractères accentués ne font pas partie des lettres autorisées.
  2. Le nom de la variable ne peut commencer par un chiffre.
  3. Le langage Python est sensible à la casse, ce qui signifie que des lettres majuscules et minuscules ne constituent pas la même variable (AGE est différent de aGe, elle-même différente de age).


Au-delà de ces règles de syntaxe incontournables puisque parties intégrantes du langage, il existe des conventions définies par les programmeurs. L'une d'elle, que j'ai tendance à utiliser le plus souvent, consiste à écrire la variable en minuscule et de remplacer les espaces éventuels par un signe souligné "_". Si je dois créer une variable contenant mon âge, elle se nommera donc mon_age. Une autre généralement utilisée est de remplacer les caractères commençant chaque mot par la majuscule de ce caractère, à l'exception du premier mot constituant la variable. Donc, la variable contenant mon âge se nommera donc monAge.

Vous pouvez utiliser la convention qui vous plaît, même en créer une bien à vous, mais essayez de rester cohérent et de n'utiliser qu'une seule convention d'écriture, car vous repérer dans vos variables est essentiel dès lors qu'on commence à travailler sur des programmes un peu plus consistants.

Ainsi, si je veux associer mon âge à une variable, la syntaxe sera :

Code : Python1
mon_age = 21




L'interpréteur vous remet aussitôt trois chevrons sans aucun message. Cela signifie qu'il a bien compris et qu'il n'y a eu aucune erreur.

Sachez qu'on appelle cette étape l'affectation de variable. On dit en effet qu'on a affecté 21 à la variable mon_age.

On peut afficher la valeur de cette variable en l'entrant simplement dans l'interpréteur de commandes.

Code : Python Console1
2
3
>>> mon_age
21
>>>




N.B.: Les espaces séparant = du nom et de la valeur de la variable sont facultatifs. Je les mets pour des raisons de lisibilité, mais il est possible, par la suite, que je ne le fasse pas, ne soyez donc pas surpris.

Bon, c'est bien joli tout ça, mais qu'est-ce qu'on fait avec cette variable ?


Et bien, tout ce que vous avez déjà fait dans le chapitre précédent, en utilisant cette variable comme un nombre à part entière. Vous pouvez même affecter d'autres variables à partir de calculs sur la première, et c'est là toute la puissance de ce mécanisme.

Essayons par exemple d'augmenter de 2 la variable mon_age :

Code : Python Console1
2
3
4
>>> mon_age = mon_age + 2
>>> mon_age
23
>>>




Encore une fois, lors de l'affectation de la variable, rien ne s'affiche, ce qui est parfaitement normal.

Maintenant, essayons d'affecter une autre variable d'après la valeur de mon_age.

Code : Python Console1
2
3
4
>>> mon_age_x2 = mon_age * 2
>>> mon_age_x2
46
>>>




Encore une fois, je vous invite à tester en long, en large et en travers cette possibilité. Le concept n'est pas compliqué, mais extrêmement puissant. De plus, comparé à certains langages, affecter une valeur à une variable est des plus simples. Si la variable n'est pas créée, Python le fait automatiquement. Si la variable existe déjà, l'ancienne valeur est supprimée et remplacée par la nouvelle. Quoi de plus simple
smile.png
?

Certains mot-clés de Python sont réservés, c'est-à-dire que vous ne pouvez pas créer des variables portant ce nom.


En voici la liste pour Python 3.

and elif import return as else in try assert except is while break finally lambda with class for not yield continue from or
def global pass
del if raise


Ces mot-clés sont utilisés par Python, vous ne pouvez pas construire des variables avec. Vous allez découvrir dans la suite de ce cours la majorité de ces mot-clés et comment ils s'utilisent
smile.png
.
Les types de données en Python

Là se trouve un concept très important que l'on retrouve dans beaucoup de langages de programmation. Ouvrez bien en grand vos oreilles, ou plutôt vos yeux, car vous devrez être parfaitement à l'aise avec ce concept pour continuer ce tutoriel. Rassurez-vous toutefois, du moment que vous êtes attentifs, il n'y a rien de délicat à comprendre.

Qu'entend-t-on par "type de donnée" ?


Jusqu'ici, vous n'avez travaillé qu'avec des nombres. Et s'il faut bien avouer qu'on ne fera que très rarement un programme sans aucun nombre, c'est loin d'être la seule donnée que l'on peut utiliser en Python. A terme, vous serez même capable de créer vos propres types de données, mais n'anticipons pas.

Python a besoin de savoir quels types de données sont utilisées, d'abord, et tout bêtement, pour savoir quelles opérations il peut effectuer. Vous allez dans ce chapitre apprendre à faire des chaînes de caractères, et multiplier une chaîne de caractères ne se fait pas du tout comme multiplier un nombre. Pour certains types de données, la multiplication n'a d'ailleurs aucun sens. Python associe donc à chaque donnée un type qui va définir les opérations qu'il peut faire sur cette donnée en particulier.

Les différents types de données


Nous n'allons voir ici que les incontournables et les plus faciles à manier. Des chapitres entiers seront consacrés aux types plus complexes.

Les nombres



Les entiers

Et oui, Python différencie les entiers des nombres à virgule flottante !

Pourquoi cela ?


Initialement, c'est surtout pour une question de place en mémoire, mais les opérations que l'on effectue sur des nombres à virgule ne sont pour un ordinateur pas les mêmes que les opérations que l'on effectue sur un entier, et cette distinction reste encore d'actualité de nos jours.

Le type entier se nomme int en Python ("entier" en anglais). La syntaxe d'un entier est un nombre sans virgule.

Code : Python1
3




Nous avons vu dans le chapitre précédent les opérations que l'on pouvait effectuer sur ce type de données, et quand bien même vous ne vous en souviendriez pas, les deviner est assez élémentaire.

Les flottants

Les flottants sont les nombres à virgule. Ils se nomment float en Python ("flottant" en anglais). La syntaxe d'un nombre flottant est celle d'un nombre à virgule (n'oubliez pas de remplacer la virgule par un point). Si ce nombre n'a pas de partie flottante mais que vous voulez qu'il soit considéré par le système comme un flottant, vous pouvez lui mettre une partie flottante de 0 (exemple 52.0).

Code : Python1
3.152




Les nombres après la virgule ne sont pas infinis, puisque rien n'est infini en informatique. Mais la précision est assez importante pour travailler sur des données très précises.

Les chaînes de caractères


Heureusement, Python ne permet pas seulement de traiter des nombres, bien loin de là. Le dernier type "simple" que nous verrons dans ce chapitre consiste en les chaînes de caractères. Elles permettent de stocker une série de lettres, une phrase, pourquoi pas.

On peut écrire une chaîne de caractères de différentes façons :


  • Entre guillemets ("ceci est une chaîne de caractères" )
  • Entre apostrophes ('ceci est une chaîne de caractères' )
  • Entre triples guillemets ("""ceci est une chaîne de caractères""" )


Quelques remarques sont à faire quant aux chaînes de caractères :


  • On peut, à l'instar des nombres (et de tous les types de données) stocker une chaîne de caractères dans une variable (ma_chaine = "Bonjour, la foule !" )
  • Si vous utilisez les délimiteurs simples (le guillemet ou l'apostrophe) pour encadrer une chaîne de caractères, il faut échapper, au choix, les guillemets ou les apostrophes que vous contiendrez dans la chaîne. Par exemple, si vous tapez :

    Code : Python1
    chaine = 'je m'appelle Prolixe.'




    Vous obtenez le message :

    Code : Console
    File "<stdin>", line 1
    chaine = 'je m'appelle Prolixe.'
    ^
    SyntaxError: invalid syntax



    Ceci est dû au fait que l'apostrophe de "m'appelle" est considéré par Python comme la fin de la chaîne, et qu'il ne sait pas quoi faire de tout ce qui se trouve au-delà.

    Pour pallier ce problème, il faut échapper les apostrophes se trouvant au coeur de la chaîne (si les délimiteurs sont des apostrophes, il va de soi que si vous utilisez des guillemets, le problème ne se pose pas avec des apostrophes). Pour se faire, on insère l'anti-slash "\" avant les apostrophes contenus dans le message.

    Code : Python1
    chaine = 'je m\'appelle Prolixe.'




    On doit également échapper les guillemets si on utilise les guillemets comme délimiteurs :

    Code : Python1
    chaine2 = "\"Le seul individu formé, c'est celui qui a appris comment apprendre (...)\" (Karl Rogers, 1976)"

  • Le caractère d'échappement "\" est utilisé pour symboliser d'autres signes très utiles. Ainsi, "\n" symbolise un saut de ligne ("essai\nsur\nplusieurs\nlignes" ). Pour écrire un véritable anti-slash dans une chaîne, il faut lui-même l'échapper (donc écrire "\\").

    N.B.: l'interpréteur affiche les sauts de lignes comme on les entre, c'est-à-dire sous forme de "\n". Nous verrons dans la partie qui vient juste après comment afficher réellement ces chaînes de caractères, et pourquoi l'interpréteur ne les affiche pas comme il le devrait.
  • Utiliser les triple guillemets pour encadrer une chaîne de caractères dispense d'échapper les guillemets, les apostrophes, et permet d'écrire plusieurs lignes sans symboliser les retours à la ligne grâce à "\n".

    Code : Python Console1
    2
    3
    4
    >>> chaine3 = """Ceci est un nouvel
    ... essai sur plusieurs
    ... lignes"""
    >>>




    Notez que les trois chevrons sont remplacés par trois points, ce qui signifie que l'interpréteur considère que vous n'avez pas fini d'écrire cette instruction, qui ne s'achève en effet que quand vous refermez la chaîne avec trois nouveaux guillemets. Les sauts de lignes seront remplacés automatiquement par des "\n" dans la chaîne."


Vous pouvez utiliser, à la place des trois guillemets, trois apostrophes qui ont exactement le même but. Je n'utilise personnellement pas ces délimiteurs, mais sachez qu'ils existent et ne soyez pas surpris si vous les voyez un jour dans un code source.

Voilà, le rapide tour d'horizon des types simples est accompli. Qualifier les chaînes de caractères de type simple n'est pas strictement vrai, mais nous n'allons pas dans ce chapitre rentrer dans le détail des opérations que l'on peut effectuer sur ces chaînes, c'est inutile pour l'instant, et ce serait hors sujet. Cependant, rien ne vous empêche de tester vous même quelques opérations comme l'addition et la multiplication (dans le pire des cas, Python vous dira qu'il ne peut pas faire ce que vous lui demandez), et comme nous l'avons vu, il est peu rancunier
heureux.png
.

Un petit bonus


Dans le chapitre précédent, nous avons vu les opérateurs "classiques" pour manipuler des nombres, mais aussi, comme on le verra plus tard, d'autres types de données. D'autres opérateurs ont été créés afin de simplifier la manipulation des variables.

Vous serez amené par la suite, et assez régulièrement, à incrémenter des variables. L'incrémentation désigne l'augmentation de la valeur d'une variable d'un certain nombre. Jusqu'ici, j'ai procédé comme ceci pour augmenter une variable de 1 :

Code : Python1
variable = variable + 1




Cette syntaxe est claire, intuitive, mais assez longue, et les programmeurs, tout le monde le sait, sont des fainéants nés ;). On a donc trouvé plus court :

Code : Python1
variable += 1




L'opérateur += revient à ajouter la valeur précisée à sa suite à la variable qui le précède. Les opérateurs -=, *= et /= existent également, bien qu'ils soient moins utilisés.

Quelques trucs et astuces pour vous faciliter la vie



Python propose un moyen simple de permuter deux variables (échanger leur valeur). Dans d'autres langages, il est nécessaire de passer par une troisième variable qui retient l'une des deux valeurs... ici c'est bien plus simple :

Code : Python Console1
2
3
4
5
6
7
8
>>> a = 5
>>> b = 32
>>> a,b = b,a # permutation
>>> a
32
>>> b
5
>>>




Comme vous le voyez, après l'exécution de la ligne 3, les variables a et b ont échangées leur valeur. On retrouvera cette distribution d'affectation bien plus loin
smile.png
.

On peut également affecter une valeur à plusieurs variables assez simplement :

Code : Python Console1
2
3
4
5
6
>>> x = y = 3
>>> x
3
>>> y
3
>>>




Enfin, ce n'est pas encore d'actualité pour vous, mais sachez qu'on peut couper une instruction Python, pour l'écrire sur deux lignes ou plus.

Code : Python Console1
2
3
4
>>> 1 + 4 - 3 * 19 + 33 - 45 * 2 + (8 - 3) \
... -6 + 23.5
-86.5
>>>




Comme vous le voyez, le symbole "\" permet, avant un saut de ligne, de dire à Python "cette instruction se poursuit en-dessous). Vous pouvez ainsi morceler votre instruction sur plusieurs lignes.
Première utilisation des fonctions

Et bien, ça avance gentiment, et je me permets d'introduire l'utilisation des fonctions dans le chapitre des variables, même s'il s'agit, en fait, bien plus d'une application concrète de ce que vous avez appris juste à l'instant. Un chapitre entier sera consacré aux fonctions, mais utiliser celles que je vais vous montrer n'est pas sorcier et pourra vous être utile.

Utiliser une fonction



A quoi servent les fonctions ?


Une fonction exécute un certain nombre d'instructions déjà enregistrées. En gros, c'est comme si vous enregistriez un groupe d'instructions pour faire une action précise et que vous lui donniez un nom. Vous n'avez plus ensuite qu'à appeler cette fonction par son nom autant de fois que nécessaire (cela évite bon nombre de répétitions). Toutefois, il est encore bien trop tôt pour apprendre à créer vos fonctions.

La plupart des fonctions ont besoin d'au moins un paramètre pour travailler sur une donnée. Les fonctions que je vais vous montrer ne font pas exception. Ce concept vous semble peut-être un peu difficile à saisir dans son ensemble, mais rassurez-vous, les exemples devraient rendre tout limpide.

Les fonctions s'utilisent en suivant cette syntaxe : nom_de_la_fonction(parametre_1,parametre_2,...,parametre_n).


  • Vous commencez par écrire le nom de la fonction.
  • Vous placez entre parenthèses les paramètres de la fonction. Si la fonction n'attend aucun paramètre, vous devrez quand même mettre les parenthèses, sans rien entre elles.


La fonction "type"



Dans la partie précédente, je vous ai présenté les types de données simples, du moins une partie d'entre eux. Une des grandes puissances de Python est qu'il comprend automatiquement de quel type est une variable et cela lors de son affectation. Mais il est pratique de pouvoir savoir de quel type est une variable.

La syntaxe de cette fonction est simple :

Code : Python1
type(nom_de_la_variable)




La fonction retourne le type de la variable passée en paramètre. Vu que nous sommes dans l'interpréteur de commandes, cette valeur sera affichée. Si vous entrez dans l'interpréteur les lignes suivantes :

Code : Python1
2
a = 3
type(a)




Vous obtenez :

Code : Python Console1
<class 'int'>




Python vous indique donc que la variable a appartient à la classe des entiers. Ce mot de classe ne sera pas approfondi avant bien des chapitres, mais sachez qu'on peut le rapprocher d'un type de donnée.

Vous pouvez faire le test sans passer par des variables :

Code : Python Console1
2
3
4
5
>>> type(3.4)
<class 'float'>
>>> type("un essai")
<class 'str'>
>>>




N.B.: str est l'abréviation de "string" qui signifie chaîne (sous-entendu, de caractère) en anglais.

Vous serez peut-être amené à utiliser cette fonction pour différencier des actions en fonction de types de données, mais pour l'instant il est juste utile de savoir à quel type de donnée appartient une variable.

La fonction "print"



La fonction print permet d'afficher une ou plusieurs variables.

Mais... on ne fait pas exactement la même chose en entrant juste le nom de la variable dans l'interpréteur ?


Oui, et non. L'interpréteur l'affiche, car il affiche automatiquement tout ce qu'il peut, pour pouvoir suivre les étapes d'un programme. Cependant, quand vous ne travaillerez plus avec l'interpréteur, taper simplement le nom de la variable n'aura aucun effet. De plus, et vous l'aurez sans doute remarqué, l'interpréteur entoure les chaînes de caractères de délimiteurs et affiche les caractères d'échappement, tout ceci encore pour des raisons de clarté.

La fonction print est dédiée à l'affichage uniquement. Son nombre de paramètres est variable, c'est à dire que vous pouvez lui demander d'afficher une ou plusieurs variables. Considérez cet exemple :

Code : Python1
2
3
4
5
a = 3
print(a)
a = a + 3
b = a - 2
print("a =", a, "et b =", b)




Le premier appel à print se contente d'afficher la variable a, c'est à dire 3.
Le second appel à print affiche :

Code : Python Console1
a = 6 et b = 4




Ce deuxième appel à print est peut-être un peu plus dur à comprendre. En fait, on passe quatre paramètres à print, deux chaînes de caractères, et a et b. Quand Python interprète cette fonction, il va afficher dans l'ordre de passage les paramètres en les séparant par un espace.

Relisez bien cet exemple, il montre tout l'intérêt des fonctions. Si vous avez du mal à le comprendre dans son ensemble, décortiquez-le en prenant chaque paramètre indépendamment.

Testez l'utilisation de print avec d'autres types de données, et en insérant des chaînes avec des sauts de lignes et des caractères échappés, pour bien vous rendre compte de la différence.

Un petit Hello World ?


Quand on fait un cours sur un langage quelconque, il est pour ainsi dire de tradition de présenter le programme Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! qui permet de montrer assez rapidement la syntaxe superficielle d'un langage.

Le but du jeu est très simple : faire un programme qui affiche Hello World. Dans certains langages, notamment les langages compilés, vous pourrez avoir autour d'une dizaine de lignes pour obtenir ce résultat. En Python, comme nous venons de le voir, il ne suffit que d'une seule ligne :

Code : Python1
print("Hello World !")




Pour ma part, je cherche toujours quelque chose de plus simple
clin.png
.

Pour plus d'informations, n'hésitez pas à consulter la page Wikipédia consacrée au programme Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!, vous avez même le code de ce programme sous un grand nombre de langages, ce peut être intéressant
smile.png
.

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
 

spsp111

Membre
Dec 13, 2010
73
0
431
+ 1 SPR :hap:

Mais c'est pas grave Ô grand admin :noel:

De toute façon il a mis un lien vers le site officiel :lol: