Académique Documents
Professionnel Documents
Culture Documents
Dans un programme tab_limite.py on veut définir une classe Tableau_taille_fixee pour représenter
un tableau de taille fixée contenant des nombres entiers ou None.
Le constructeur __init__ de cette classe possède un paramètre : taille, taille est un integer
strictemment positif, il vaut 1 par défaut si un utilisateur ne donne pas de valeur pour taille lors de
l’instanciation.
Puis lors d’une instanciation : Chaque instance de classe Tableau aura trois attributs :
- Un attribut qui est une liste Python tab de taille éléments valant tous None.
- Un attribut taille_fixee qui est un integer valant taille ( et donc aussi len(self.tab) )
- Un attribut index_max qui est un integer valant -1.
class Tableau_taille_fixee:
…
question 1 : compléter le constructeur de cette classe qui vous est donné, sachant que :
- Le constructeur doit lever une AssertionError si le paramètre fourni pour taille n’est pas de classe int
ou n’est pas strictement positif.
def __init__(self, taille=1):
…
self.tab = [None] * taille # self.tab est de type list Python
self.taille_fixee = taille
self.index_max = - 1 # le plus haut index du tableau qui a été rempli
question 2 :
Ajouter une méthode __str__ qui affiche en console une instance de classe Tableau_taille_fixee
Exemple :
>>> print(Tableau_taille_fixee(5))
[ [None, None, None, None, None] ]
>>> a = Tableau_taille_fixee(5)
Et si nous insérons dans le tableau des valeurs : 8 en position 1, 3 en position 2, 5 en position 3.
Nous aurons :
>>> print(a)
[ [8, 3, 5, None, None] ]
1
Terminale- NSI activité : Tableau de taille fixée
question 3 :
Ajouter une méthode __repr__ qui affiche en console une instance de classe Tableau_taille_fixee
Exemple :
>>> a
[ [8, 3, 5, None, None] ]
question 4 : Nous voulons compléter le code une méthode append telle que l’on puisse ajouter des
valeurs à l’attribut tab d’une instance :
def append(self, val):
assert self.index_max + 1 < … , "le tableau est déjà rempli"
self.tab[…] = …
self.index_max = …
ainsi :
>>> b = Tableau_taille_fixee(5)
>>> b.append(4)
>>> b
[ [4, None, None, None, None] ]
>>> b.index_max
0
>>> b.append(6)
>>> b
[ [4, 6, None, None, None] ]
>>> b.index_max
1
>>> b.append(7)
>>> b.append(9)
>>> b.append(2)
>>> b
[ [4, 6, 7, 9, 2] ]
>>> b.index_max
5
>>> b.append(10)
AssertionError , "le tableau est déjà rempli"
question 5 : : Nous voulons compléter le code d’une méthode __len__ telle que l’on puisse retourner
le nombre de valeurs que contient l’attribut tab d’une instance de classe Tableau_taille_fixee :
def __len__(self) :
…
>>> a = Tableau_taille_fixee(5)
>>> len(a)
0
>>> a.append(8)
>>> len(a)
1
>>> a.append(3)
>>> print(a)
[ [8, 3, 5, None, None] ]
>>> len(a)
3
2
Terminale- NSI activité : Tableau de taille fixée
question 7 : Ajouter une méthode __setitem__ telle que pour une instance a on puisse modifier
uiquement les valeurs déjà rentrées, par exemple :
>>> a
[[2, 1, 8, None, None]]
>>> a[1] = 5
>>> a
[[2, 5, 8, None, None]]
>>> a[4] = 1
…
AssertionError: cette case est vide
question 8 : Nous voulons ajouter trois méthodes
inserer telle que : avec inserer(self, index, val) l’élément val sera inséré dans l’attribut tab à la
position index sans écraser de valeurs déjà présentes dans le tableau.
supprimer telle que : avec supprimer(self, i) l’élément situé à la position i dans l’attribut tab sera
supprimé et s’il y a des éléments placés après, ils seront décalés pour ne pas laisser de "trou".
rechercher telle que : avec rechercher(self, elem) l’élément elem est cherché dans l’attribut tab et on
retourne son index de première présence s’il est présent et None dans le cas où il n’est pas présent.