sujet  n°1 

Recherche, distance entre deux points

.

Exercice N°1 :

Enoncé Exemple :

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.

>>> recherche([5, 3],1)

2

>>> recherche([2,4],2)

0

>>> recherche([2,3,5,2,4],2)

3

 

REPONSE

def recherche(T,a):

    resultat=len(T)

    for i in range(len(T)):

        if T[i]==a and i<len(T):

            resultat=i

    return resultat

 

Il faut utiliser idle et copier la commande ci-dessous et appuyer sur entrée

>>> recherche([5, 3],1)

2

>>> recherche([2,4],2)

0

>>> recherche([2,3,5,2,4],2)

3

.

Exercice N°2 :

Chercher :

 

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  ..  et  
est donnée par la formule :

                                                ..

On importe pour cela la fonction racine carrée (sqrt) du module math de Python.
On dispose d'une fonction distance et d'une fonction plus_courte_distance :

from math import sqrt   # import de la fonction racine carrée

def distance(point1, point2):

    """ Calcule et renvoie la distance entre deux points. """

    return sqrt((...)**2 + (...)**2)

assert distance((1, 0), (5, 3)) == 5.0, "erreur de calcul"

def plus_courte_distance(tab, depart):

    """ Renvoie le point du tableau tab se trouvant à la plus    

    courte distance du point depart."""

    point = tab[0]

    min_dist = ...

    for i in range (1, ...):

        if distance(tab[i], depart)...:

            point = ...

            min_dist = ...

    return point

assert plus_courte_distance([(7, 9), (2, 5), (5, 2)], (0, 0)) == [2, 5], "erreur"

 

Recopier sous Python (sans les commentaires) ces deux fonctions puis compléter leur
code et ajouter une ou des déclarations (assert) à la fonction distance permettant
de vérifier la ou les préconditions.

 

.

REPONSE

.

Programme 

from math import sqrt

# import de la fonction racine carrée

tab=[(7, 9), (2, 5), (6, 0), (7, 8)]

def distance(point1, point2):

    """ Calcule et renvoie la distance entre deux points. """

    return sqrt((point1[0]-point2[0])**2 + (point1[1]-point2[1])**2)

assert distance((5, 0), (4, 3)) !=5.0, "erreur de calcul"

tab=[(7, 9), (2, 5), (6, 0), (7, 8)]

num=list(range(0,len(tab),1))

for i in num:

    a1,a2,a3,a4=tab[0][0],tab[i][0],tab[0][1],tab[i][1]

    assert  (distance((a1,0),(a2,0)))**2 !=abs(float(a1-a2)) or abs(float(a1+a2)) ,"erreur de calcul 1"

    assert  (distance((0,a3),(0,a2)))**2 !=abs(float(a3-a4)) or abs(float(a3+a4)) ,"erreur de calcul 1"

def plus_courte_distance(tab, depart):

    """ Renvoie le point du tableau tab se trouvant à la plus    

    courte distance du point depart."""

    point = tab[0]

    min_dist = distance((0,0),tab[0])      

    for i in range (1,len(tab)):

       

        if distance(tab[i], depart)<=min_dist:

            point =tab[i]

            min_dist = distance(point, depart)

    return point

assert plus_courte_distance([(7, 9), (2, 5), (6, 0), (7, 8)],(7,9)) not in [[2, 5],[6,0]], "erreur"

Il faut utiliser idle et copier la commande ci-dessous et appuyer sur entrée

plus_courte_distance(tab, tab[0])