Dichotomie
Listes Min max Moy Rch
Ep 42
le document
l'algorithme
Issue de : 23-NSI-28
EXERCICE 1
Programmer la fonction multiplication
, prenant en paramĂštres deux nombres entiers n1
et n2
, et qui renvoie le produit de ces deux nombres.
Ăcrire une fonction moyenne
qui prend en paramĂštre un tableau dâentiers non vide et qui renvoie un nombre flottant donnant la moyenne de ces entiers.
Attention : il est interdit dâutiliser la fonction sum ou la fonction mean (module statistics) de Python
Exemple :
đ Script Python >>> moyenne ([ 1 ])
1.0
>>> moyenne ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
4.0
>>. moyenne ([ 1 , 2 ])
1.5
RĂ©ponse
Complétez le code ci-dessous
# Mettez votre code icibksl-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-nltry:bksl-nl assert moyenne([1, 2, 3, 4, 5, 6, 7]) == 4.0bksl-nl assert moyenne([1, 2]) == 1.5bksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')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.
ComplĂ©ter lâalgorithme de dichotomie donnĂ© ci-aprĂšs.
đ Script Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 def dichotomie ( tab , x ):
"""
tab : tableau d'entiers trié dans l'ordre croissant
x : nombre entier
La fonction renvoie True si tab contient x et False sinon
"""
debut = 0
fin = len ( tab ) - 1
while debut <= fin :
m = ...
if x == tab [ m ]:
return ...
if x > tab [ m ]:
debut = m + 1
else :
fin = ...
return ...
Exemples :
đ 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
>>> dichotomie ([ 15 , 16 , 18 , 19 , 23 , 24 , 28 , 29 , 31 , 33 ], 1 )
False
>>> dichotomie ([], 28 )
False
RĂ©ponse
Complétez le code ci-dessous
def dichotomie(tab, x):bksl-nl """bksl-nl tab : tableau d'entiers trié dans l'ordre croissantbksl-nl x : nombre entierbksl-nl La fonction renvoie True si tab contient x et False sinonbksl-nl """bksl-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 dâentiers triĂ© dans lâordre croissantbksl-nl x : nombre entierbksl-nl La fonction renvoie True si tab contient x et False sinonbksl-nl """bksl-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 Falsebksl-nlbksl-nltry:bksl-nl assert dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 28) == Truebksl-nl assert dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 27) == Falsebksl-nl assert dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 1) == Falsebksl-nl assert dichotomie([], 28) == Falsebksl-nl print('Tout semble correct đ')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đ€')bksl-nl