Aller au contenu

Programmer la fonction derniere_occurrence, prenant en paramètre un tableau non vide d'entiers et un entier cible, et qui renvoie l'indice de la dernière occurrence de cible.

Si l'élément n'est pas présent, la fonction renvoie la longueur du tableau.

On n'utilisera pas la fonction index

Exemples

🐍 Script Python
>>> derniere_occurrence([5, 3], 1)
2
1 est absent, on renvoie la longueur du tableau : 2.

🐍 Console Python
>>> derniere_occurrence([2, 4], 2)
0
2 est présent à l'indice 0, on renvoie 0.

🐍 Console Python
>>> derniere_occurrence([2, 3, 5, 2, 4], 2)
3
2 est présent aux indices 0 et 3, on renvoie le dernier : 3

###
# testsbksl-nlbksl-nlassert dernierepy-undoccurrence([5, 3], 1) == 2bksl-nlassert dernierepy-undoccurrence([2, 4], 2) == 0bksl-nlassert dernierepy-undoccurrence([2, 3, 5, 2, 4], 2) == 3bksl-nlbksl-nl# Autres testsbksl-nlbksl-nlassert dernierepy-undoccurrence([1, 2, 1, 2, 1], 1) == 4bksl-nlassert dernierepy-undoccurrence([1, 2, 3, 4, 5], 0) == 5bksl-nlassert dernierepy-undoccurrence([1, 2, 3], 1) == 0bksl-nlbksl-nl 5/5

def dernierepy-undoccurrence(tableau, cible):bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert dernierepy-undoccurrence([5, 3], 1) == 2bksl-nlassert dernierepy-undoccurrence([2, 4], 2) == 0bksl-nlassert dernierepy-undoccurrence([2, 3, 5, 2, 4], 2) == 3bksl-nlbksl-nldef dernierepy-undoccurrence(tableau, cible):bksl-nl indicepy-unddernier = len(tableau)bksl-nl for i in range(len(tableau)):bksl-nl if tableau[i] == cible:bksl-nl indicepy-unddernier = ibksl-nl return indicepy-unddernierbksl-nlbksl-nl

A

Le fait de renvoyer la longueur du tableau pour une cible non trouvée est discutable. Une bonne pratique est plutôt de renvoyer None.

En commençant par la fin⚓︎

On s'arrête dès qu'on trouve la cible :

🐍 Script Python
def derniere_occurrence(tableau, cible):
    for i in range(len(tableau)-1, -1, -1):
        if tableau[i] == cible:
            return i
    return len(tableau)

Autre façon de partir par la fin⚓︎

On incrémente la variable de boucle, mais on décrémente la position considérée.

🐍 Script Python
def derniere_occurrence(tableau, cible):
    n = len(tableau)
    for indice in range(1, n + 1):
        if tableau[n - indice] == cible:
            return n - indice
    return n

En renvoyant None⚓︎

Ce code ne correspond pas à ce qui est demandé, mais il est intéressant.

🐍 Script Python
def derniere_occurrence(tableau, cible):
    for i in range(len(tableau)-1, -1, -1):
        if tableau[i] == cible:
            return i
  • Si la cible n'est pas trouvée, on renvoie None. C'est une bonne idée !
  • Commencer par la fin est plus logique pour obtenir une réponse rapide.

Z