Ep 28
ⶠTélécharger le sujet en pdf.
EXERCICE 1
Ăcrire une fonction qui prend en paramĂštre un tableau d'entiers non vide et qui renvoie la moyenne de ces entiers. La fonction est spĂ©cifiĂ©e ci-aprĂšs et doit passer les assertions
fournies.
RĂ©ponse
Complétez le code ci-dessous
def moyenne (tab):bksl-nl '''bksl-nl moyenne(list) -> floatbksl-nl Entrée : un tableau non vide d'entiersbksl-nl Sortie : nombre de type floatbksl-nl Correspondant à la moyenne des valeurs présentes dans lebksl-nl tableaubksl-nl '''bksl-nlbksl-nl assert moyenne([1]) == 1bksl-nl assert moyenne([1, 2, 3, 4, 5, 6, 7]) == 4bksl-nl assert moyenne([1, 2]) == 1.5bksl-nlbksl-nl
Solution
def moyenne(tab):bksl-nl '''bksl-nl moyenne(list) -> floatbksl-nl Entrée : un tableau non vide d'entiersbksl-nl Sortie : nombre de type floatbksl-nl Correspondant à la moyenne des valeurs présentes dans lebksl-nl tableaubksl-nl '''bksl-nl somme = 0bksl-nl for elt in tab:bksl-nl somme += eltbksl-nl return somme / len(tab)bksl-nlbksl-nl
EXERCICE 2
Le but de l'exercice est de compléter une fonction qui détermine si une valeur est présente dans un tableau de valeurs triées dans l'ordre croissant.
L'algorithme traite le cas du tableau vide et il est Ă©crit pour que la recherche dichotomique ne se fasse que dans le cas oĂč la valeur est comprise entre les valeurs extrĂȘmes du tableau.
On distingue les trois cas qui renvoient False
en renvoyant False, 1
, False, 2
et False, 3
.
Compléter l'algorithme de dichotomie donné ci-aprÚs.
RĂ©ponse
Complétez le code ci-dessous
def dichotomie(tab, x):bksl-nl """bksl-nl tab : tableau triĂ© dans lâordre croissantbksl-nl x : nombre entierbksl-nl La fonction renvoie True si tab contient x et False sinonbksl-nl """bksl-nl # cas du tableau videbksl-nl if ...:bksl-nl return False, 1bksl-nlbksl-nl # cas oĂč x n'est pas compris entre les valeurs extrĂȘmesbksl-nl if (x < tab[0]) or ...:bksl-nl return False, 2bksl-nlbksl-nl debut = 0bksl-nl fin = len(tab) - 1bksl-nl while debut <= fin:bksl-nl m = ...bksl-nl if x == tab[m]:bksl-nl return ...bksl-nl if x > tab[m]:bksl-nl debut = m + 1bksl-nl else:bksl-nl fin = ...bksl-nl return ...bksl-nlbksl-nl
Solution
def dichotomie(tab, x):bksl-nl """bksl-nl tab : tableau triĂ© dans lâordre croissantbksl-nl x : nombre entierbksl-nl La fonction renvoie True si tab contient x et False sinonbksl-nl """bksl-nl # cas du tableau videbksl-nl if tab == []:bksl-nl return False, 1bksl-nlbksl-nl # cas oĂč x n'est pas compris entre les valeurs extrĂȘmesbksl-nl if (x < tab[0]) or (x > tab[-1]):bksl-nl return False, 2bksl-nlbksl-nl debut = 0bksl-nl fin = len(tab) - 1bksl-nl while debut <= fin:bksl-nl m = (debut + fin) // 2bksl-nl if x == tab[m]:bksl-nl return Truebksl-nl if x > tab[m]:bksl-nl debut = m + 1bksl-nl else:bksl-nl fin = m - 1bksl-nl return False, 3bksl-nlbksl-nl
Exemple :
đ Script Python >>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],28)
True
>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],27)
(False, 3)
>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],1)
(False, 2)
>>> dichotomie([],28)
(False, 1)