NSI Première

Représentation des données - Types construits


Les données constituent la matière première de toute activité numérique.

Comme nous l'avons vu, une donnée peut être représentée par :

  • Un nombre ( entier ou réel )
  • Une chaîne de caractères
  • Un booléen ( Vrai ou Faux )

Ces représentations sont dites de types simples.

  • Un entier -->; type int (Integer)

  • Un réel -->; type float (Float)

  • Un booléen -->; type bool (boolean)

  • Une chaîne de caractère -->; type str (String)

Le type str est aussi de type simple mais il est particulier :

    Chaque caractère d'une chaîne a un indice, et ce système d'indice permet d’accéder à une partie de la chaîne.

    Revoir si nécessaire : Les chaînes de caractères

Avec ces types nous pouvons définir des variables qui représentent chacune une donnée.

Mais si le nombre de données est important ou si nous avons besoin d'en regrouper certaines (comme les coordonnées d'un point)

Nous aurons alors besoin de définir des variables dont les valeurs sont des ensembles de valeurs.


Nous allons voir trois types d'objets : Le type tuple (n-uplet) , le type list (liste) et le type dict (dictionnaire)

    Pour faire simple, un objet peut être simple ou construit (composé de plusieurs objets).

    Un exemple :

      Un objet 'train' peut être composé de deux objets 'trains' (accrochés entre eux) et chacun d'entre eux est composé d'une locomotive, de wagons,etc.

      Chaque wagon étant composé d'objets...

1 - Un premier modèle : le n-uplet

On retrouve les propriétés d'une chaîne de caractères :

  • Les éléments sont ordonnés, chacun avec un indice

  • On ne peut pas modifier les éléments par affectation.

De plus les éléments peuvent être de tout type.


L'objet ainsi défini correspond au type tuple.

    Un tuple se définit avec des parenthèses:

      mon_tuple = (1, 2, 3, 'bonjour')

      les éléments sont séparés par une virgule.

Les tuples en Python

Comme déjà dit ci-dessus, un tuple est une séquence. Voici un exemple très simple :

mon_tuple = (5, 8, 6, 9)

Dans le code ci-dessus, le nom mon_tuple est associé à un tuple (l'association entre un nom et un tuple est aussi une variable), ce tuple est constitué des entiers 5, 8, 6 et 9. Comme indiqué dans la définition, chaque élément du tuple est indicé (il possède un indice):

le premier élément du tuple (l'entier 5) possède l'indice 0 le deuxième élément du tuple (l'entier 8) possède l'indice 1 le troisième élément du tuple (l'entier 6) possède l'indice 2 le quatrième élément du tuple (l'entier 9) possède l'indice 3 Comment accéder à l'élément d'indice i dans un tuple ?

Simplement en utilisant la "notation entre crochets" :

mon_tuple = (5, 8, 6, 9)
a = mon_tuple[2]

Dans le programme ci-dessus, la variable a a pour valeur 6.

ATTENTION : dans les séquences les indices commencent toujours à 0 (le premier élément de la séquence a pour indice 0), oublier cette particularité est une source d'erreur "classique".

Un tuple ne contient pas forcément des nombres entiers, il peut aussi contenir des nombres décimaux, des chaînes de caractères, des booléens...

Dans le programme ci-dessous :

mon_tuple = ("le", "monde", "bonjour")
msg = mon_tuple[2] + " " + mon_tuple[0] + " " + mon_tuple[1] + "!"

la variable msg a pour valeur : "bonjour le monde!"

Grâce au tuple, une fonction peut renvoyer plusieurs valeurs :

Intéressons-nous au programme suivant :

def add(a, b):
    c = a + b
    return (a, b, c)
val = add(5, 8)
Après exécution du programme ci-dessus, la variable val a pour valeur le tuple (5, 8, 13) car notre fonction add renvoie bien un tuple (return (a, b, c))

Il est possible d'associer à des noms les valeurs contenues dans un tuple. Dans l'exemple ci-dessous :

a, b, c = (5, 8, 6)

la variable a a pour valeur 5, b a pour valeur 8 et c a pour valeur 6.



Compléments sur "Les tuples"


TP sur "Les tuples"

2 - Un second modèle : la liste ou tableau

  • Les éléments sont ordonnés, chacun avec un indice

  • On autorise la modification d'un élément

  • Les éléments peuvent être de tout type.

Ce qui permet davantage de souplesse dans l'utilisation...


L'objet ainsi défini correspond au type list.


Cours et Activites

Découverte des listes (tableau)


Parcours et création d'une liste

Travaux Dirigés (TD)

Exercices de TD sur les listes

Récapitulatif - Listes - Tuples

Ces deux modèles ainsi que les objets de type str ont des éléments indexés par une suite d'entiers.

Ce sont des séquences.


Devoir Maison évalué à rendre

Devoir Maison évalué à rendre

3 - Le Dictionnaire

  • Les éléments sont indexés par des 'clés'

  • On autorise la modification d'un élément

Les dictionnaires sont très utiles pour manipuler des données du type : félin : (lion, jaguar, tigre,..), reptile : (alligator, lézard, ...) etc.


L'objet ainsi défini correspond au type dict.

    Un dictionaire se définit avec des accolades:

      mon_dico = {cle1 : val1 , cle2 : val2 , cle3 : val3}

      les éléments sont séparés par une virgule.


Le cours et activités


Exercices


TP - Rang d'une page Web


Devoir Maison

Le code Morse

Exercices Récapitulatifs sur les tuples, listes et dictionnaires

Quel modèle choisir ?

Il n'y a pas de règles générales qui imposent tel ou tel modèle... On peut :

  • Choisir un tuple, car les éléments qu'il contient n'ont pas vocation à être modifiés.
  • Choisir une liste, pour la souplesse de son utilisation.
  • Choisir un dictionnaire car c'est la meilleure représentation des données à traiter.

De plus, chacun de ces modèles peut contenir des éléments d'un autre modèle...

  • Une liste de tuples...
  • Un dictionnaire dont les valeur sont d'autres dictionnaires, des listes...
  • À peu près n'importe quelle combinaison est envisageable...
  • Dans tous les cas le meilleur modèle est celui qui est le plus adapté au problème traité.

    Activité publiée le 11 11 2021
    Dernière modification : 21 12 2023
    Auteurs : ljm et modifié par Andjekel