1. Variables

Objectifs de cette session :

  • distinguer le nom, la valeur et le type d’une variable,

  • déclarer une variable et lui affecter une valeur,

  • reconnaître les quatre types int, float, str et bool,

  • retrouver le sens d’un opérateur dans une expression,

  • respecter les règles et conventions de nommage.

1.1. Nom, valeur, type

Une variable est une valeur nommée et stockée en mémoire. Elle a trois caractéristiques :

  • son nom : l’étiquette qui l’identifie dans le programme,

  • sa valeur : l’information qu’elle contient,

  • son type : la nature de cette information.

Cette variable a pour nom age, pour valeur 17, et pour type int.

1.2. Affectation

Le symbole = est l’opérateur d’affectation : il stocke la valeur de droite dans la variable de gauche. La première affectation déclare la variable.

Avertissement

Le = ne se lit pas « égale » mais « reçoit la valeur ». Il ne faut pas le confondre avec ==, ni avec le = mathématique.

Un nom ne désigne qu’une seule variable : réaffecter écrase l’ancienne valeur, seule la dernière est conservée.

Une variable peut figurer des deux côtés du =. L’ordinateur calcule d’abord le côté droit, puis affecte le résultat au nom de gauche.

Exercice 1

Mettez la valeur 6 dans une variable a, affichez-la, divisez-la par trois, remettez le résultat dans a, puis affichez-la de nouveau.

Solution

Le second affichage donne 2.0 et non 2 : la division / produit toujours un float.

1.3. Les quatre types de base

Type

Nature

Exemples

int

nombre entier

2, 45, -4

float

nombre à virgule

2.3, -89.0

str

chaîne de caractères

"bonjour", '3432'

bool

booléen

True, False

Avertissement

La décimale s’écrit avec un point : 3.14. "42" entre guillemets est une chaîne, pas un nombre. True et False prennent une majuscule.

Question

Quel est le type de "False" ?

Question

Quel est le type de 12.0 ?

Exercice 2

Quel est le type de chacune de ces valeurs ? Remplacez les points par chaque valeur pour vérifier.

# a) "rewr"      # b) 34        # c) 5.0       # d) 'julien34'
# e) "65.5"      # f) True      # g) "False"  # h) rewr
Solution

a) str b) int c) float d) str
e) str — les guillemets en font une chaîne, malgré le point
f) bool g) str — une chaîne qui contient le mot False
h) erreur : sans guillemets, rewr est lu comme un nom de variable, qui n’existe pas.

1.4. Les opérateurs

Un opérateur est un symbole qui effectue une opération sur des valeurs.

Opérateurs arithmétiques

Opérateur

Sens

Exemple

Résultat

+

addition

7 + 3

10

-

soustraction

7 - 3

4

*

multiplication

7 * 3

21

/

division

7 / 2

3.5

//

division entière

7 // 2

3

%

reste (modulo)

7 % 2

1

**

puissance

2 ** 8

256

Toutes ces opérations donnent un entier si les deux opérandes sont entiers, sauf la division / qui donne toujours un float.

La priorité suit les règles mathématiques. Les parenthèses lèvent toute ambiguïté.

Opérateurs de comparaison

Ils comparent deux valeurs et donnent un bool : <, <=, >, >=, == (égal à), != (différent de). En mathématiques on écrit ≤, ≥ et ≠ ; en Python ces symboles s’écrivent avec deux caractères.

Concaténation

Sur les chaînes, + colle bout à bout et * répète.

Question

Quel est le résultat de 10 % 3 ?

Exercice 3

Qu’affichent ces programmes ? Notez vos réponses sur papier avant de vérifier.

# a)             # b)             # c)
x = 2           x = 2           x = 2
y = 3           y = 3           y = 3
x = y           y = x           x = x == y
print(x, y)    print(x, y)    print(x, y)

# d)             # e)             # f)
x = 2           x = 2           x = 2
y = 5           y = 3           y = 3
x = y // x      y = x % y       y = y - x
y = y * y       x = x * 2       x = x * y
print(x, y)    print(x, y)    print(x, y)
Solution

a) 3 3 b) 2 2 c) False 3
d) 2 25 e) 4 2 f) 2 1

Exercice 4

Ce programme échange les valeurs de a et b. Suivez-le ligne par ligne et donnez les valeurs finales.

Solution

Ligne 3 : a = 13, b = 3. Ligne 4 : b = 13 - 3 = 10. Ligne 5 : a = 13 - 10 = 3.
Affichage : 3 10. Les deux valeurs ont été échangées sans variable supplémentaire.

1.5. Nommer une variable

Python n’accepte pas n’importe quel nom. Un nom ne peut pas commencer par un chiffre, ni contenir d’accent, d’espace, d’apostrophe ou de caractère spécial. Les majuscules comptent : age et Age désignent deux variables différentes. Enfin, les mots réservés du langage (def, for, in, return…) sont interdits.

Exercice 5

Exécutez ce programme, puis décommentez les lignes une à une. Quel message d’erreur obtenez-vous à chaque fois, et pourquoi ?

Solution

Les deux premières lignes fonctionnent : un nom peut commencer par _ et contenir des _.
38b commence par un chiffre, mon age contient une espace, prix-unitaire contient un tiret que Python lit comme une soustraction, def est un mot réservé. Ces quatre cas donnent une SyntaxError.
élève s’exécute sans erreur, car Python accepte l’Unicode, mais les accents sont à proscrire par convention.

Conventions

Le nom d’une variable doit toujours représenter au mieux son utilité. On écrit tout en minuscules, les mots séparés par des tirets bas, ce qu’on appelle le snake_case.

Ces conventions sont fixées par la communauté Python dans un document appelé PEP 8.

1.6. Erreurs fréquentes

Exercice 6

Exécutez ce programme. Lisez le message d’erreur, expliquez-le, puis corrigez.

Solution

NameError: name 'z' is not defined. La variable z n’a jamais été déclarée : aucune valeur ne lui a été affectée avant son utilisation. Il faut ajouter une ligne comme z = 2 avant la ligne 2.

Exercice 7

Même consigne.

Solution

Le booléen s’écrit True avec une majuscule. Écrit en minuscules, Python le prend pour un nom de variable inconnu et signale une NameError.

Exercice 8

Ce programme s’exécute sans erreur, mais le résultat n’est pas celui attendu. Expliquez pourquoi, puis corrigez pour obtenir 7.

Solution

Les guillemets font de "5" et "2" des chaînes de caractères. Sur des chaînes, + ne fait pas une addition mais une concaténation, d’où 52. En retirant les guillemets, on obtient deux int et l’addition donne 7.

1.7. Résumé

  • une variable a un nom, une valeur et un type,

  • = affecte une valeur ; la première affectation déclare la variable,

  • les quatre types de base sont int, float, str et bool,

  • les opérateurs arithmétiques, de comparaison et la concaténation,

  • les règles de nommage et la convention snake_case.