Aller au contenu

TP - Renvoyer un tableau☘

Téléchargez le fichier « à trous » TPB01.21.py (clic droit -> [Enregistrer sous]) et enregistrez-le dans le dossier [B01_Tableaux].

Consignes communes à chaque partie

Le programme principal contient un appel au module doctest :

##----- Programme principal et tests -----##
if __name__ == '__main__':
    import doctest
    doctest.testmod()
Chacune des fonctions devra passer les tests proposés.
Il faudra aussi ajouter vos propres tests dans le programme principal (le main) afin de vous entraîner à en réaliser.

Enfin, il faudra essayer de réaliser deux versions pour chaque fonction dont une en générant en compréhension le tableau résultat.

Partie 1 : Sélection d'éléments☘

Complétez le code de la fonction avant_pivot() qui prend en paramètre un tableau d'entiers tab et un entier valeur et qui renvoie un tableau constitué des éléments de tab strictement inférieurs à valeur.

1
2
3
4
5
6
7
8
def avant_pivot(tab, valeur):
    """
    tab – list, tableau d'entiers
    Sortie: list - tableau des éléments de tab strictement inférieurs à valeur
    >>> avant_pivot([2, 6, 3, 9, 4, 42], 7)
    [2, 6, 3, 4]
    """
    pass

Partie 2 : Copier un tableau☘

Complétez le code de la fonction copier() qui prend en paramètre un tableau tab et qui renvoie un autre tableau ayant les mêmes éléments que tab, dans le même ordre.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def copier(tab):
    """
    tab – list
    Sortie: list - Tableau contenant les mêmes éléments que tab,
            dans le même ordre 
    >>> A = [42, 666, 1789]
    >>> B = copier(A)
    >>> B
    [42, 666, 1789]
    >>> B is A         # B et A ne sont pas le même objet
    False
    >>> B == A         # B et A ont le même contenu
    True
    """
    pass
Attention

Si l'on dispose d'un tableau A, l'instruction B = A ne copie pas A dans B. Cette instruction consiste à donner un second nom au même tableau. On a ainsi un seul objet en mémoire, qui porte deux noms.

>>> A = [42, 666, 1789]
>>> B = A
>>> B
[42, 666, 1789]
>>> B is A         # B et A sont-ils le même objet
True
>>> B == A         # B et A ont-ils le même contenu
True

Un prochain chapitre permettra de comprendre ce comportement.

Partie 3 : Renverser un tableau☘

Complétez le code de la fonction renverser() qui prend en paramètre un tableau tab et qui renvoie un autre tableau ayant les mêmes éléments que tab mais dans l'ordre inverse.

1
2
3
4
5
6
7
8
9
def renverser(tab):
    """
    tab – list
    Sortie: list - Tableau contenant les mêmes éléments que tab,
            dans l'ordre inverse 
    >>> renverser([2, 6, 3, 9, 4, 42])
    [42, 4, 9, 3, 6, 2]
    """
    pass

Partie 4 : Trancher un tableau☘

Complétez le code de la fonction trancher() qui prend en paramètre un tableau tab et deux entiers indice_min et indice_max et qui renvoie un tableau constitué des éléments de tab ayant un indice compris entre indice_min (inclus) et indice_max (inclus).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def trancher(tab, indice_min, indice_max):
    """
    tab – list
    indice_min, indice_max - int, entiers strictement positifs tels que
                             0 <= indice_min < indice_max < len(tab)
    Sortie: list - Tableau constitué des éléments de tab
            ayant un indice compris entre indice_min et indice_max.
    >>> trancher([2, 6, 3, 9, 7, 42], 1, 4)
    [6, 3, 9, 7]
    """
    pass

Il faudra que votre programme lève l'erreur suivante :

>>> trancher([2, 6, 3, 9, 7, 42], 4, 1)
AssertionError: Mauvaise plage d'entiers

Partie 5 : Occurrences de chaque élément☘

Complétez le code de la fonction ranger() qui prend en paramètres un tableau tab d'entiers compris entre 0 et 9. Cette fonction renvoie un tableau de 10 entiers qui correspondent respectivement au nombre de 0 dans tab, au nombre de 1 dans tab, au nombre de 2 dans tab, etc...

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def ranger(tab):
    """
    tab – list, tableau non vide d'entiers compris entre 0 et 9
    Sortie: list - tableau de 10 éléments qui correspondent au nombre
            d'éléments de tab égaux à 0, égaux à 1, etc., égaux à 9
    >>> T = [0, 3, 4, 6, 6, 6, 9, 6, 8, 9, 6, 6, 0, 7, 6, 4, 8, 7, 8, 9]
    >>> ranger(T)
    [2, 0, 0, 1, 2, 0, 7, 2, 3, 3]
    """
    pass

Il faudra que votre programme lève l'erreur suivante :

>>> ranger([])
AssertionError: Le tableau ne doit pas être vide

Important

Il est inutile de chercher une définition par compréhension pour cet exercice.