Aller au contenu

Ep 38

le document

l'algorithme

Issue de : 23-NSI-38⚓

EXERCICE 1⚓

Écrireune fonction indices_maxi qui prend en paramĂštre un tableau non videde nombre entiers tab, reprĂ©sentĂ© par une liste Python et qui renvoie un tuple (maxi, indices) oĂč :

  • maxi est le plus grand Ă©lĂ©ment du tableau tab ;
  • indices est une liste Python contenant les indices du tableau tab oĂč apparaĂźt ce plus grand Ă©lĂ©ment.

Exemple :

🐍 Script Python
>>> indices_maxi([1, 5, 6, 9, 1, 2, 3, 7, 9, 8])
(9, [3, 8])
>>> indices_maxi([7])
(7, [0])

RĂ©ponse

Complétez le code ci-dessous

###
# Mettez votre code icibksl-nlbksl-nl



Solution

###
def indicespy-undmaxi(tab):bksl-nl valpy-undmax = tab[0]bksl-nl indpy-undmax = []bksl-nl for i in range(len(tab)):bksl-nl if tab[i] > valpy-undmax:bksl-nl valpy-undmax = tab[i]bksl-nl for i in range(len(tab)):bksl-nl if tab[i] == valpy-undmax:bksl-nl indpy-undmax.append(i)bksl-nl return (valpy-undmax, indpy-undmax)bksl-nlbksl-nltry:bksl-nl assert indicespy-undmaxi([1, 5, 6, 9, 1, 2, 3, 7, 9, 8]) == (9, [3, 8])bksl-nl assert indicespy-undmaxi([7]) == (7, [0])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⚓

Cet exercice utilise des piles qui seront représentées en Python par des listes (type list).

On rappelle que l’expression liste_1 = list(liste) fait une copie de listeindĂ©pendante de liste, que l’expression x = liste.pop() enlĂšve le sommet de la pile liste et le lace dans la variable x et, enfin, que l’expression liste.append(v) place la valeur v au sommet de la pile liste.

ComplĂ©ter le code Python de la fonction positif ci-dessous qui prend une pile liste de nombres entiers en paramĂštre et qui renvoie la pile des entiers positifs dans le mĂȘme ordre, sans modifier la variable liste.

🐍 Script Python
1

Exemple :

🐍 Script Python
>>> renverse([1, 2, 3, 4, 5])
[5, 4, 3, 2, 1]
>>> positifs([-1, 0, 5, -3, 4, -6, 10, 9, -8])
[0, 5, 4, 10, 9]
>>> positifs([-2])
[]

RĂ©ponse

Complétez le code ci-dessous

###
def positif(pile):bksl-nl pilepy-und1 = ...(pile)bksl-nl pilepy-und2 = ...bksl-nl while pilepy-und1 != []:bksl-nl x = ...bksl-nl if ... >= 0:bksl-nl pilepy-und2.append(...)bksl-nl while pilepy-und2 != ...:bksl-nl x = pilepy-und2.pop()bksl-nl ...bksl-nl return pilepy-und1bksl-nlbksl-nl



Solution

###
def renverse(pile):bksl-nl '''renvoie une pile contenant les mĂȘmes Ă©lĂ©ments que pile,bksl-nl mais dans l'ordre inverse.bksl-nl Cette fonction dĂ©truit pile.'''bksl-nl pilepy-undinverse = [] bksl-nl while pile != []:bksl-nl pilepy-undinverse.append(pile.pop()) bksl-nl return pilepy-undinversebksl-nlbksl-nldef positifs(pile):bksl-nl '''renvoie une pile contenant les Ă©lĂ©ments positifs de pile,bksl-nl dans le mĂȘme ordre. Cette fonction dĂ©truit pile.'''bksl-nl pilepy-undpositifs = [] bksl-nl while pile != []:bksl-nl x = pile.pop() bksl-nl if x >= 0: bksl-nl pilepy-undpositifs.append(x)bksl-nl return renverse(pilepy-undpositifs)bksl-nlbksl-nltry:bksl-nl assert renverse([1, 2, 3, 4, 5]) == [5, 4, 3, 2, 1]bksl-nl assert positifs([-1, 0, 5, -3, 4, -6, 10, 9, -8]) == [0, 5, 4, 10, 9]bksl-nl assert positifs([-2]) == []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