Vous êtes sur la page 1sur 7

Représentation des données : types construits

p-uplets

Né en 1924, Charles Bachman développe l’un des premiers systèmes de gestion des bases de données,
connu sous le nom d’Integrated Data Store (IDS). Il élabore le Databasic pour permettre au langage Basic
d’y avoir accés.

I. Définition :
Un p-uplets est un objet de type tuple. Comme une chaîne de caractères, c’est une suite ordonnée
d’éléments, chacun avec un indice, et dont il est impossible de modifier par affectation un ou plusieurs
caractères. Par contre, ces éléments peuvent être de n’importe quel type.
Pour créer un n-uplet, il suffit d’écrire n valeurs séparées par des virgules.
Un n-uplet peut contenir un p-uplet, ou plusieurs. Dans ce cas, des parenthèses sont nécessaires et à
l’affichage un tuple est toujours présenté entouré de parenthèses ce qui améliore la lisibilité.
Pour la création d’un tuple contenant un seul élément ou d’un tuple vide, la syntaxe est spéciale.
Pour créer un 1-tuple, on écrit t=3, ou t=(3,). La virgule suivant l’élément est obligatoire.
Pour créer un tuple vide, l’instruction est t=(), sans virgule mais avec des parenthèses.

Exemple : Dans un jeu vidéo, vous voulez identifier des lieux précis. Pour cela, vous associer à chaque
lieu un triplet (nom,abscisse,ordonnée). Ainsi, le château du joueur A pourra ainsi est modélisé par une
séquence comme ("fort_1",15,-56.2).
Remarquez que les éléments du p-uplet sont de trois types différents ici.

Exemple :

Tuples élèves Page 1 sur 7


Autre manière d’écrire :

Exercice I.1 : On considère


tup1=() # un tuple vide
tup2=(3,) # tuple avec un seul élément
tup3=(1,4,5,'moto',4.6) # tuple avec cinq élément
tup4=1,4,5,'moto',4.6 # même tuple sans parenthèse

print(type(tup1)) # pour accéder au type de l'objet


print(tup3==tup4) # test si les tuples tup3 et tup4 sont égaux ou non
Tester dans un IDE Python.

ATTENTION :
II. Utilisation :
Les indices commencent à 0 !!!!
1. Accès aux éléments
Si un tuple est non vide, ses n éléments sont indexés, par des entiers 0, 1, 2, ….n – 1.
On accède à chacun de ses éléments en utilisant des crochets et l’indice de l’élément.

Il est aussi possible d’accéder à


une partie de l’élément.

Comme avec les chaînes de caractères, il est possible de numéroter à partir de la fin, le dernier élément
ayant pour indice −1.

Dans le cas de tuples emboités, c’est-à-dire un tuple contenant des tuples, si t[i] est un tuple on
accède aux éléments de ce tuple avec l’écriture t[i][j].

La longueur d’un tuple, le nombre de ses éléments, est donnée par la fonction len.
Rappelons que si un tuple a n éléments, l’indice du dernier élément est n – 1 .

Tuples élèves Page 2 sur 7


ATTENTION : un élément d’un tuple n’est pas modifiable par une affectation de la forme t[i]=…

L’utilisation de tuple permet l’affectation multiple. Ainsi, avec l’instruction a,b,c=1,2,3, les
valeurs 1 , 2, 3 sont respectivement affectées aux variables a , b , c .
Ceci autorise aussi une méthode simple pour l’échange de deux valeurs ou la permutation de valeurs.
Avec l’instruction a,b=b,a les valeurs de a et b sont échangées.

Exercice II.1 :
On donne le tuple suivant : casse_all = ("chateauB",-10,48.2,False) qui signifie que le lieu considéré est
nommé "châteauB", qu'il se situe au point de coordonnées (−10;48.2)(−10;48.2) et qu'il n'est pas occupé
par le joueur B. Écrire les lignes de code qui affichent :
1. 48.2 casse_all[2]
2. le dernier élément du tuple casse_all[-1]
3. (-10,48.2) casse_all[1:3]
4. "chateauB" casse_all[0]

Exercice II.2 :
Chaque joueur peut posséder plusieurs personnages actifs, chacun se situant dans un lieu donné.
Stockons l'ensemble des lieux occupés par les personnages du joueur C au tour 8 dans le tuple C_tour8.
Supposons que C_tour8 = (("antre_orcs",85,36),("chateau_C",-105.2,23,True)) . Écrire les lignes de code
qui affichent :
1. "chateau_C",-105.2,23,True C_tour8[1]
2. "chateau_C" C_tour8[1][0]
3. -105.2,23 C_tour8[1][1:3]

2. Opérations
Les opérations + et * s’utilisent comme avec les chaînes de caractères. Ce sont des opérateurs de
concaténation.

Tuples élèves Page 3 sur 7


Exemple :

3. Appartenance
L’appartenance d’un tuple se teste avec l’opérateur « in » :

Opérations/méthodes Description
Méthodes et opérations communes aux listes et tuples.
Renvoie True si un élément de tup est égal à
elt in tup
elt, False sinon
Renvoie True si aucun un élément de tup n'est
elt not in tup
égal à elt, False sinon
len(tup) Renvoie le nombre d'éléments de tup
Renvoie True si tup et tup1 sont de même type,
tup == tup1 ont la même longueur et ont des éléments
égaux deux à deux.
Renvoie l'élément d'indice i de tup sachant que
tup[i]
le premier élément a pour indice 0.
Renvoie une partie de l'indice i à j, j étant non
tup[i:j]
inclus
Renvoie l'indice de la première apparition de elt
tup.index(elt)
dans tup
tup.count(elt) Renvoie le nombre d'apparitions de elt dans tup
Renvoie une nouvelle séquence, séquence
tup1+tup2 correspondant à la concaténation de tup1 suivie
de tup2.
Renvoie une nouvelle séquence composée de la
tup*n
concaténation de tup avec lui-même n fois.

Exercice II.3 :
Voici deux tuples ci-dessous.
jours_1=('lundi','mardi','mercredi','jeudi','vendredi')
jours_2=('samedi','dimanche')
Utiliser les méthodes et les opérations du tableau pour tester les différentes questions :
1. Tester si samedi est un élément de jours_1. «samedi» in jours_1
2. Donner la longueur de jours_2. len(jours_2)
3. Tester si jours_1 est égal à jours_2. jours_1==jours_2
4. Donner le deuxième élément de jours_1. jours_1[1]
5. Donner la partie de jours_1 entre le deuxième élément et le quatrième élément.jours_1[1 :5]

Tuples élèves Page 4 sur 7


6. renvoyer l'indice de dimanche dans jours_2. jours_2.index(«dimanche»)
7. Renvoyer le nombre de samedi dans jours_2. jours_2.count(«samedi»)
8. Créer un tuple semaine par concaténation de jours_1 et de jours_2.
semaine = jours_1 + jours_2

Exemple 1 :
Que renvoie cette fonction ?

Exemple 2 :
Que renvoie cette fonction ?

A quoi cela correspond-il ?

Dans l’exemple 2, la fonction renvoie un tuple constitué de tous les triplets pythagoricien dont l’hypoténuse est
inférieure à la valeur u demandée.

Exercice II.4 :
Tester les deux scripts suivant séparément :
tup=("puits_elfique",78,61.3)
for elt in tup : # méthode 1, elt vaut tour à tour chaque élément de la séquence en respectant la
position dans le tuple
print(elt) # print est utilisée à des fins d'observation de code ici : on lit le contenu de elt
for i in range(len(tup)): # méthode 2, on parcourt les indices de la séquence

Tuples élèves Page 5 sur 7


print(tup[i]) # on lit le contenu de l'élément du tuple tup en position i

Exercice II.5 :
En utilisant un parcours de tuple avec la présence d'un indice, écrire une
fonction est_dans(element,tple) qui en argument reçoit un entier element et un tuple d'entiers tple,
fonction qui renvoie un booleen indiquant la présence ou non de element dans tple.
Testez la fonction au moins avec les scripts suivants :
 est_dans(4,(1,2,3,4,5,6)) qui devrait renvoyer True.
 est_dans(9,(1,2,3,4,5,6)) qui devrait renvoyer False.
def est_dans(element,tple):
for elt in tple:
if elt == element:
return True
return False
Avec le script suivant, avez-vous tou.te.s le même retour ?
import random
tple=()
for i in range(1000):
r=random.randint(1,1000)
tple=tple+(r,) # bien analyser le rôle de cette ligne est_dans(400,tple)

4. Ajouter un argument à un tuple


On ne peut pas ajouter un argument entre le 1er et le dernier argument d’un tuple.
On ne peut le faire qu’au début.

ou

5. Pourquoi utiliser un tuple ?


Il est très souvent question de tuples comme résultat d’une fonction.

Exemple : La fonction divmod renvoie un tuple (plus précisément, un


couple) dont le premier argument est le quotient de la
division euclidienne de 7 par 3, et le second, son reste.

Tuples élèves Page 6 sur 7


6. Disperser un tuple
Disperser un tuple, c’est le « casser » en plusieurs variables (autant que d’arguments du tuple).

Exemple :
56 15
11 3

Exercice II.6 :
Écrire une fonction triangle_rect(n) qui renvoie un tuple où chaque élément est un tuple de longueur trois,
ces tuples sont constitués de trois entiers a, b,c tels que 0 <a ≤ b ≤ c < n , et le triangle de
cotés a, b et c soit rectangle. Le tuple renvoyé doit contenir tous les triplets possibles.

Par exemple triangle_rect(20) renvoie le tuple ((3, 4, 5), (5, 12, 13), (6, 8, 10), (8, 15, 17), (9, 12, 15)).

Pour s’entraîner si nécessaire, travail en autonomie sur :


https://pixees.fr/informatiquelycee/n_site/nsi_prem_pythonSequence.html

Tuples élèves Page 7 sur 7

Vous aimerez peut-être aussi