Académique Documents
Professionnel Documents
Culture Documents
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 :
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.
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 .
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.
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]
Exemple 1 :
Que renvoie cette fonction ?
Exemple 2 :
Que renvoie cette fonction ?
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
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)
ou
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)).