Chercher une valeur et sa position
Exercice de TD · niveau 2 · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Manipuler une liste
Énoncé
- Écrire une fonction
contient(L, v)renvoyantTruesivfigure dansL. - Écrire
position(L, v)renvoyant l'indice de la première occurrence dev, et sivest absente. - Écrire
positions(L, v)renvoyant la liste de toutes les positions. - Tester sur
L = [4, 7, 2, 7, 9, 7]avecv = 7, puisv = 5.
Corrigé
1., 2. et 3.
def contient(L, v):
for x in L:
if x == v:
return True
return False
def position(L, v):
for i in range(len(L)):
if L[i] == v:
return i # on sort dès la première trouvée
return -1
def positions(L, v):
p = []
for i in range(len(L)):
if L[i] == v:
p.append(i)
return p
4.
L = [4, 7, 2, 7, 9, 7]
print(contient(L, 7), position(L, 7), positions(L, 7)) # True 1 [1, 3, 5]
print(contient(L, 5), position(L, 5), positions(L, 5)) # False -1 []
Trois points de méthode.
Le return False de contient est hors de la boucle : on ne peut conclure à l'absence qu'après avoir tout parcouru. Placé dans la boucle, il ferait répondre False dès le premier élément différent.
Les deux dernières fonctions parcourent par indice, car c'est la position que l'on cherche — c'est le cas où for x in L ne suffit pas.
Enfin, position s'arrête à la première occurrence, alors que positions va jusqu'au bout. La valeur pour « absent » est une convention répandue : elle ne peut être confondue avec aucun indice valide, puisque ceux-ci sont positifs — mais il faut penser à la tester, car L[-1] reste une écriture licite qui désignerait le dernier élément.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.