La fiche corrigée est ici.
Pour avoir l'indice de la valeur recherchée, le plus logique est donc de faire un parcours par indice du tableau :
def recherche_sequentielle(tab: list, valeur: int)->(bool, int):
for i in range(len(tab)):
if tab[i] == valeur:
return True, i
return False, -1 # "-1" est l'entier signifiant "pas trouvé"
def recherche_dicho(tab: list, valeur: int)->(bool, int):
g = 0 # g = indice du premier élément du tableau
d = len(tab)-1 # d = indice du dernier élément
while g<=d : # tant que la "zone de recherche" dans le tableau n'est pas réduite à un seul ou deux élément(s)
m = (g+d)//2 # calcul de l'indice de l'élément "au milieu"
if tab[m] == valeur: # si l'élément à cet indice est égal à la valeur recherchée,
return True, m # alors on renvoie True et cet indice.
else: # Sinon,
if valeur < tab[m]: # si la valeur recherchée est PLUS PETITE que l'élément à l'indice m,
d = m - 1 # alors on poursuit la recherche dans la partie GAUCHE
else: # sinon ( donc si la valeur recherchée est PLUS GRANDE ),
g = m + 1 # alors on poursuit la recherche dans la partie DROITE
return False, -1 # si la "zone de recherche" a été réduite à un seul élément, c'est que la valeur n'est pas présente dans le tableau