Vous êtes sur la page 1sur 7

Chapitre 6

Les types (partie langage)

I Généralités

1 Pourquoi les types ?


Initialement, c’est surtout pour une question de place en mémoire mais, pour un ordinateur,
les opérations que l’on effectue sur des nombres à virgule ne sont pas les mêmes que celles sur
les entiers, et cette distinction reste encore d’actualité de nos jours.
Python a besoin de connaître quels types de données sont utilisés pour savoir quelles opérations
il peut effectuer avec. Par exemple, pour certains types de données, la multiplication n’a aucun
sens, ou un sens différent (voir exercice 1 de la fiche d’exercice type). Python associe donc à
chaque donnée un type, qui va définir les opérations autorisées sur cette donnée en particulier.

2 Les types déjà rencontrés

• Le type int (integer : nombre entier).


• Le type float (floating point number : nombre en notation scientifique).
• Il existe même un type complex (pour les nombres complexes).
• Le type bool (pour les booléens). Par exemple, l’expression 2 < 5 (évaluée True). On écrit
en général les booléens False et True, et non 0 et 1 pour éviter les confusions avec les
nombres.
• Le type str (string pour chaîne de caractères).

Remarques

• Une valeur de type int est exprimée sur un nombre de bits arbitraires (voir codage des
entiers). Les valeurs de type float sont exprimées sur 64 bits selon la méthode vue pré-
cédemment : 1 bit de signe, 11 bits d’exposant, 52 bits de mantisse. Un booléen est
simplement un bit : True est une autre notation pour le bit 1, et False une autre notation
pour le bit 0. Dans une valeur de type str, chaque caractère est exprimé en Unicode (voir
le chapitre codage des caractères).
• On peut changer le type d’une expression en la préfixant par le nom d’un type, par
exemple, si la valeur de l’expression e est le nombre entier 17, alors celle de l’expression
str(e) est la chaîne de caractères "17". Si la valeur de l’expression e est le nombre à virgule
4,0, alors celle de l’expression int(e) est le nombre entier 4.
• Si la valeur de l’expression e est un nombre à virgule, comme 3,6, qui ne correspond pas
à un nombre entier, alors la valeur de l’expression int(e) est une troncature de e, dans cet
exemple 3. Note : pour obtenir la partie entière on utilise la fonction floor().
Exercice : quel est le type approprié pour les variables suivantes :

1. une variable qui contient le prénom de l’utilisateur,

2. une variable qui contient le nombre de fois que le corps d’une boucle doit être exécuté,

3. une variable qui stocke au fur et à mesure le plus grand des nombres qu’un utilisateur
tape au clavier,

4. une variable qui permet de traiter différemment un nombre selon qu’il est pair ou impair.

3 Listes
Jusqu’à présent, on a écrit des programmes qui utilisent des variables de types int, float et
bool. Une boîte d’un tel type contient une valeur formée d’un unique nombre ou d’un unique
booléen. Dans de nombreuses situations, on a besoin d’utiliser des valeurs qui, comme les textes,
les images ou les sons, sont formées de plusieurs nombres ou de plusieurs booléens. Ces valeurs
sont dites de type composite (comme les chaînes de caractères). Ici on introduit un nouveau
type composite : un type appelé tableau dans de nombreux langages de programmation, mais
list en Python.

Définition
Une liste est une variable pouvant contenir plusieurs valeurs.

Exemples
Par exemple, pour définir une liste contenant dix fois le nombre 42, on saisit :

on parle d’allocation de liste.


On peut alors faire des affectations de variables avec ces listes, accéder à des termes de la liste,
les modifier (attention à la numérotation des éléments qui commence à 0 et pas à 1).
On dit que le type list est modifiable ou mutable.
Voici quelques exemples à tester pour comprendre le fonctionnement :
Définition de deux liste l et L en compréhension, puis modification du troisième terme de la
liste (d’indice égal à 2 ) :
Définition en compréhension de la liste des cubes de la liste l :

On peut opérer sur l’indice et la valeur du terme de la liste :

Attention, le type str n’est pas mutable :

II Listes bidimensionnelles
Pour finir, sachez qu’il est tout-à-fait possible de construire des listes de listes. Cette fonction-
nalité peut être parfois très pratique. Par exemple :

>>> enclos1 = [’girafe’, 4]


>>> enclos2 = [’tigre’, 2]
>>> enclos3 = [’singe’, 5]
>>> zoo = [enclos1, enclos2, enclos3]
>>> zoo
[[’girafe’, 4], [’tigre’, 2], [’singe’, 5]]
Dans cet exemple, chaque sous-liste contient une catégorie d’animal et le nombre d’animaux
pour chaque catégorie. Pour accéder à un élément de la sous-liste, on utilise un double indiçage.

>>> zoo[1]
[’tigre’, 2]
>>> zoo[1][0]
’tigre’
>>> zoo[1][1]
2
Exemples
1) Créez 4 listes : hiver (janvier, février, mars), printemps (avril, mai, juin), été (juillet, août,
septembre) et automne (octobre, novembre, décembre) contenant les mois correspondant à
ces saisons. Créez ensuite une liste saisons contenant les sous-listes hiver , printemps , été et
automne. Prévoyez ce que valent les variables suivantes, puis vérifiez-le dans l’interpréteur :
• saisons[2]
• saisons[1][0]
• saisons[1:2]
2) Tester le script suivant, qui permet d’obtenir un triangle de Pascal :

III Compléments

1 Tuples
Du point de vue de la syntaxe, un tuple est une collection d’éléments séparés par des virgules :

Remarques

• Le type tuple est très semblable au type list. Au niveau syntaxe, on utilise des parenthèses
pour les tuples et des crochets pour les listes. A la différence des listes, les tuples ne sont
pas modifiables :

• Les tuples sont préférables aux listes partout où l’on veut être certain que les données
transmises ne soient pas modifiées par erreur au sein d’un programme.
• Les tuples sont moins « gourmands » en ressources système (ils occupent moins de place
en mémoire, et peuvent être traités plus rapidement par l’interpréteur).
• Nous avons déjà utilisé des tuples dans les affectations multiples et lors d’échange de
contenu de variables (les parenthèses sont facultatives) :

2 Dictionnaires
Un dictionnaire est également une collection d’éléments. Au niveau de la syntaxe, on utilise des
accolades. La particularité est la suivante : chacun des éléments d’un dictionnaire possède une
clé et une valeur correspondante.

Exemple

On souhaite répertorier un certain nombre de personnes et leur sports favoris. On peut penser
à utiliser une liste :

Si on demande quel est le sport favori de Rebecca, il suffit de fouiller dans la liste pour trouver
qu’il s’agit du Volley-ball. Mais imaginons que la liste possède un millier de personne. Fouiller
serait trop long !
On peut donc avoir recours à un dictionnaire dont chaque clé serait une personne et chaque
valeur associée serait son sport favori :

A tester directement dans la console pour se familiariser avec les dictionnaires :


IMPORTANT : SAVOIR FAIRE
Avec un dictionnaire, on peut itérer sur les clés, sur les valeurs, et aussi sur les couples
clé/valeur :

Pour ajouter un couple clé/valeur à un dictionnaire existant, on procède ainsi :


perso["poids"] = 53
Pour modifier une valeur :
perso["taille"] = 115
Par défaut, on itère sur les clés, ainsi :
for cle in perso :
print(cle)
équivaut au premier parcours parmi les trois vus plus haut.
Exercice d’application immédiate :
On considère le dictionnaire :

>>> d = {'nom': 'Dupuis', 'prenom': 'Jacque', 'age': 30}

1. Donner une instruction permettant de corriger l’erreur dans le prénom, la bonne valeur
est ’Jacques’.

2. Donner une instruction permettant d’afficher la liste des clés du dictionnaire.

3. Donner une instruction permettant d’afficher la liste des valeurs du dictionnaire.

4. Donner une instruction permettant d’afficher la liste des paires clé/valeur du dictionnaire.

5. Donner une instruction permettant d’ajouter la taille de Jacques (en cm) : 170.

Vous aimerez peut-être aussi