Aller au contenu

Ep 06

▶ Télécharger le sujet en pdf.

EXERCICE 1⚓︎

Programmer la fonction recherche, prenant en paramètre un tableau non vide tab (type list) d'entiers et un entier n, et qui renvoie l'indice de la dernière occurrence de l'élément cherché. Si l'élément n'est pas présent, la fonction renvoie la longueur du tableau.

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def recherche(tab, n):bksl-nl indicepy-undsolution = len(tab)bksl-nl for i in range(len(tab)):bksl-nl if tab[i] == n:bksl-nl indicepy-undsolution = ibksl-nl return indicepy-undsolutionbksl-nlbksl-nl# Testez votre algorithmebksl-nltry:bksl-nl assert recherche([5, 3],1) == 2bksl-nl assert recherche([2,4],2) == 0bksl-nl assert recherche([2,3,5,2,4],2) == 3bksl-nl print('Tout semble correct 👍')bksl-nl bksl-nlexcept AssertionError as asser:bksl-nl print('Le résultat de votre fonction n\'est pas conforme 🤔')bksl-nl



EXERCICE 2⚓︎

On souhaite programmer une fonction donnant la distance la plus courte entre un point de départ et une liste de points. Les points sont tous à coordonnées entières.

Les points sont donnés sous la forme d'un tuple de deux entiers.

La liste des points Ă  traiter est donc un tableau de tuples.

On rappelle que la distance entre deux points du plan de coordonnées \((x;y)\) et \((x';y')\) est donnée par la formule :

\[d=\sqrt{(x-x')^2+(y-y')^2}\]

On importe pour cela la fonction racine carrée (sqrt) du module math de Python.

Compléter le code des fonctions distance et plus_courte_distance fournies ci-dessous pour qu’elles répondent à leurs spécifications.

RĂ©ponse

Complétez le code ci-dessous

###
from math import sqrt # import de la fonction racine carréebksl-nlbksl-nldef distance(point1, point2):bksl-nl """ Calcule et renvoie la distance entre deux points. """bksl-nl return sqrt((...)py-strpy-str2 + (...)py-strpy-str2)bksl-nlbksl-nldef pluspy-undcourtepy-unddistance(tab, depart):bksl-nl """ Renvoie le point du tableau tab se trouvant à la plus courte distance du point depart."""bksl-nl point = tab[0]bksl-nl minpy-unddist = ...bksl-nl for i in range (1, ...):bksl-nl if distance(tab[i], depart)...:bksl-nl point = ...bksl-nl minpy-unddist = ...bksl-nl return pointbksl-nlbksl-nlif py-undpy-undnamepy-undpy-und == "py-undpy-undmainpy-undpy-und":bksl-nlbksl-nl try:bksl-nl assert distance((1, 0), (5, 3)) == 5bksl-nl assert 1.414 < distance((1, 0), (0, 1)) < 1.415bksl-nl assert pluspy-undcourtepy-unddistance([(7, 9), (2, 5), (5, 2)], (0, 0)) == (2, 5)bksl-nl assert pluspy-undcourtepy-unddistance([(7, 9), (2, 5), (5, 2)], (5, 2)) == (5, 2)bksl-nl print('Tout semble correct 👍')bksl-nl bksl-nl except AssertionError as asser:bksl-nl print('Le résultat de votre fonction n\'est pas conforme 🤔')bksl-nlbksl-nlbksl-nl



Solution

###
from math import sqrtbksl-nlbksl-nldef distance(point1, point2):bksl-nl """ Calcule et renvoie la distance entre deux points. """bksl-nl bksl-nl return sqrt((point1[0] - point2[0])py-strpy-str2 + ((point1[1] - point2[1]))py-strpy-str2)bksl-nlbksl-nldef pluspy-undcourtepy-unddistance(tab, depart):bksl-nl """ Renvoie le point du tableau tab se trouvant à la plus courte distance du point depart."""bksl-nl bksl-nl point = tab[0]bksl-nl minpy-unddist = distance(point, depart)bksl-nl bksl-nl for i in range (1, len(tab)):bksl-nl bksl-nl if distance(tab[i], depart) < minpy-unddist:bksl-nl point = tab[i]bksl-nl minpy-unddist = distance(tab[i], depart)bksl-nl bksl-nl return pointbksl-nlbksl-nltry:bksl-nl assert distance((1, 0), (5, 3)) == 5bksl-nl assert 1.414 < distance((1, 0), (0, 1)) < 1.415bksl-nl assert pluspy-undcourtepy-unddistance([(7, 9), (2, 5), (5, 2)], (0, 0)) == (2, 5)bksl-nl assert pluspy-undcourtepy-unddistance([(7, 9), (2, 5), (5, 2)], (5, 2)) == (5, 2)bksl-nl print('Tout semble correct 👍')bksl-nl bksl-nlexcept AssertionError as asser:bksl-nl print('Le résultat de votre fonction n\'est pas conforme 🤔')bksl-nl