Aller au contenu

Ep 37

le document

l'algorithme

Issue de : 23-NSI-34⚓

EXERCICE 1⚓

Programmer la fonction moyenne prenant en paramĂštre un tableau d'entiers tab (de type list) qui renvoie la moyenne de ses Ă©lĂ©ments si le tableau est non vide. Proposer une façon de traiter le cas oĂč le tableau passĂ© en paramĂštre est vide.

Dans cet exercice, on s’interdira d’utiliser la fonction Python sum.

Exemples :

🐍 Script Python
>>> moyenne([5,3,8])
5.333333333333333
>>> moyenne([1,2,3,4,5,6,7,8,9,10])
5.5
>>> moyenne([])
# Comportement différent suivant le traitement proposé.

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def moyenne(tab):bksl-nl if tab == []:bksl-nl return []bksl-nl else:bksl-nl somme = 0bksl-nl for elt in tab:bksl-nl somme += eltbksl-nl return somme / len(tab)bksl-nlbksl-nltry:bksl-nl assert round(moyenne([5,3,8]), 3) == 5.333bksl-nl assert moyenne([1,2,3,4,5,6,7,8,9,10]) == 5.5bksl-nl assert moyenne([]) == []bksl-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



EXERCICE 2⚓

On considĂšre un tableau d’entiers tab (de type list) dont les Ă©lĂ©ments sont des 0 ou des 1. On se propose de trier ce tableau selon l’algorithme suivant : Ă  chaque Ă©tape du tri, le tableau est constituĂ© de trois zones consĂ©cutives, la premiĂšre ne contenant que des 0, la seconde n’étant pas triĂ©e et la derniĂšre ne contenant que des 1. Au dĂ©part, les zones ne contenant que des 0 et des 1 sont vides.

Zone de 0Zone non triéeZone de 1

Tant que la zone non triée n'est pas réduite à un seul élément, on regarde son premier élément :

  • si cet Ă©lĂ©ment vaut 0, on considĂšre qu'il appartient dĂ©sormais Ă  la zone ne contenant que des 0 ;
  • si cet Ă©lĂ©ment vaut 1, il est Ă©changĂ© avec le dernier Ă©lĂ©ment de la zone non triĂ©e et on considĂšre alors qu’il appartient Ă  la zone ne contenant que des 1.

Dans tous les cas, la longueur de la zone non triée diminue de 1.

Recopier sous Python en la complétant la fonction tri suivante :

🐍 Script Python
1

Question
🐍 Script Python

Exemple :

🐍 Script Python
    >>> tri([0,1,0,1,0,1,0,1,0])
    [0, 0, 0, 0, 0, 1, 1, 1, 1]       

RĂ©ponse

Complétez le code ci-dessous

###
def tri(tab):bksl-nl # i est le premier indice de la zone non triée,bksl-nl # j est le dernier indice de cette zone non triée.bksl-nl # Au début, la zone non triée est le tableau complet.bksl-nl i = ...bksl-nl j = ...bksl-nl while i != j:bksl-nl if tab[i]== 0:bksl-nl i = ...bksl-nl else:bksl-nl valeur = tab[j]bksl-nl tab[j] = ...bksl-nl ...bksl-nl j = ...bksl-nl ...bksl-nlbksl-nl



Solution

###
def tri(tab):bksl-nl # i est le premier indice de la zone non triĂ©e,bksl-nl # j est le dernier indice de cette zone non triĂ©e.bksl-nl # Au dĂ©but, la zone non triĂ©e est le tableau complet.bksl-nl i = 0bksl-nl j = len(tab) - 1bksl-nl while i != j :bksl-nl if tab[i] == 0:bksl-nl i = i + 1bksl-nl else :bksl-nl valeur = tab[j]bksl-nl tab[j] = tab[i]bksl-nl tab[i] = valeurbksl-nl j = j - 1bksl-nl return tabbksl-nlbksl-nltry:bksl-nl tab = [0,1,0,1,0,1,0,1,0]bksl-nl tri(tab)bksl-nl assert tab == [0, 0, 0, 0, 0, 1, 1, 1, 1]bksl-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