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