Ep 04
le document
l'algorithme
Issue de : 23-NSI-06
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 None
.
RĂ©ponse
Complétez le code ci-dessous
# Mettre votre code icibksl-nlbksl-nl
Solution
def recherche(tab, n):bksl-nl indicepy-undsolution = Nonebksl-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) == Nonebksl-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^2=(x-x')^2+(y-y')^2\]
Compléter le code des fonctions distance_carre
et point_le_plus_proche
fournies ci-dessous pour quâelles rĂ©pondent Ă leurs spĂ©cifications.
đ Script Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | def distance_carre(point1, point2):
""" Calcule et renvoie la distance au carre entre
deux points."""
return (...)**2 + (...)**2
def point_le_plus_proche(depart, tab):
""" Renvoie les coordonnées du premier point du tableau tab se
trouvant Ă la plus courte distance du point depart."""
min_point = tab[0]
min_dist = ...
for i in range(1, len(tab)):
if distance_carre(tab[i], depart) < ...:
min_point = ...
min_dist = ...
return min_point
|
RĂ©ponse
Complétez le code ci-dessous
def distancepy-undcarre(point1, point2):bksl-nl """ Calcule et renvoie la distance au carre entre bksl-nl deux points."""bksl-nl return (...)py-strpy-str2 + (...)py-strpy-str2 bksl-nlbksl-nldef pointpy-undlepy-undpluspy-undproche(depart, tab):bksl-nl """ Renvoie les coordonnées du premier point du tableau tab se bksl-nl trouvant à la plus courte distance du point depart."""bksl-nl minpy-undpoint = tab[0]bksl-nl minpy-unddist = ... bksl-nl for i in range(1, len(tab)):bksl-nl if distancepy-undcarre(tab[i], depart) < ...: bksl-nl minpy-undpoint = ... bksl-nl minpy-unddist = ... bksl-nl return minpy-undpointbksl-nlbksl-nl
Solution
def distancepy-undcarre(point1, point2):bksl-nl """ Calcule et renvoie la distance au carre entre bksl-nl deux points."""bksl-nl return (point1[0] - point2[0])py-strpy-str2 + ((point1[1] - point2[1]))py-strpy-str2bksl-nlbksl-nldef pointpy-undlepy-undpluspy-undproche(depart, tab):bksl-nl """ Renvoie les coordonnĂ©es du premier point du tableau tab se bksl-nl trouvant Ă la plus courte distance du point depart."""bksl-nl minpy-undpoint = tab[0]bksl-nl minpy-unddist = distancepy-undcarre(depart, tab[0])bksl-nl for i in range(1, len(tab)):bksl-nl if distancepy-undcarre(tab[i], depart) < minpy-unddist: bksl-nl minpy-undpoint = tab[i] bksl-nl minpy-unddist = distancepy-undcarre(tab[i], depart)bksl-nl return minpy-undpointbksl-nlbksl-nltry:bksl-nl assert distancepy-undcarre((1, 0), (5, 3)) == 25bksl-nl assert distancepy-undcarre((1, 0), (0, 1)) == 2bksl-nl assert pointpy-undlepy-undpluspy-undproche((0, 0), [(7, 9), (2, 5), (5, 2)]) == (2, 5)bksl-nl assert pointpy-undlepy-undpluspy-undproche((5, 2), [(7, 9), (2, 5), (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