Aller au contenu

Ep 13

le document

l'algorithme

Issue de : 23-NSI-14⚓

EXERCICE 1⚓

Écrire une fonction recherche qui prend en paramùtres elt nombre entier et tab un tableau de nombres entiers (type list), et qui renvoie l’indice de la premiùre occurrence de elt dans tab si elt est dans tab et None sinon.

L’objectif de cet exercice est de parcourir un tableau, il est interdit d’utiliser la mĂ©thode index des listes Python.

Exemples :

🐍 Script Python
>>> recherche(1, [2, 3, 4])
-1
>>> recherche(1, [10, 12, 1, 56])
2
>>> recherche(50, [1, 50, 1])
1
>>> recherche(15, [8, 9, 10, 15])
3

RĂ©ponse

Complétez le code ci-dessous

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



Solution

###
def recherche(elt, tab):bksl-nl '''bksl-nl renvoie l’indice de la premiĂšre occurrence debksl-nl elt dans tab si elt est dans tab et -1 sinon. bksl-nl '''bksl-nl assert tab != [], "le tableau est vide"bksl-nl for i in range(len(tab)):bksl-nl if tab[i] == elt:bksl-nl return i bksl-nl return -1 bksl-nlbksl-nltry:bksl-nl assert recherche(1, [2, 3, 4]) == -1bksl-nl assert recherche(1, [10, 12, 1, 56]) == 2bksl-nl assert recherche(50, [1, 50, 1]) == 1bksl-nl assert recherche(15, [8, 9, 10, 15]) == 3bksl-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-nlbksl-nl



EXERCICE 2⚓

On considĂšre la fonction insere ci-dessous qui prend en argument un tableau tab d’entiers triĂ©s par ordre croissant et un entier a.0 Cette fonction crĂ©e et renvoie un nouveau tableau tab d’entiers triĂ©s par ordre croissant.

Cette fonction crée et renvoie un nouveau tableau à partir de celui fourni en paramÚtre en y insérant la valeur a de sorte que le tableau renvoyé soit encore trié par ordre croissant.

Les tableaux seront représentés sous la forme de listes Python.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def insere(tab, a):
    """
    InsÚre l'élément a (int) dans le tableau tab (list)
    trié par ordre croissant à sa place et renvoie le
    nouveau tableau.
    """
    tab_a = [ a ] + tab # nouveau tableau contenant a 
                        # suivi des éléments de tab
    i = 0
    while i < ... and a > ...: 
        tab_a[i] = ... 
        tab_a[i+1] = a
        i = ... 
    return tab_a

Exemple :

🐍 Script Python
>>> insere(3, [1, 2, 4, 5])
[1, 2, 3, 4, 5]
>>> insere(30, [1, 2, 7, 12, 14, 25])
[1, 2, 7, 12, 14, 25, 30]
>>> insere(1, [2, 3, 4])
[1, 2, 3, 4]
>>> insere(1, [])
[1]

RĂ©ponse

Complétez le code ci-dessous

###
def insere(a, tab):bksl-nl """bksl-nl InsĂšre l'Ă©lĂ©ment a (int) dans le tableau tab (list)bksl-nl triĂ© par ordre croissant Ă  sa place et renvoie lebksl-nl nouveau tableau.bksl-nl """bksl-nl l = list(tab) #l contient les mĂȘmes Ă©lĂ©ments que tabbksl-nl l.append(a)bksl-nl i = ...bksl-nl while a < ... and i >= 0:bksl-nl l[i+1] = ...bksl-nl l[i] = abksl-nl i = ...bksl-nl return lbksl-nlbksl-nl



Solution

###
def insere(tab, a):bksl-nl """bksl-nl InsĂšre l'Ă©lĂ©ment a (int) dans le tableau tab (list)bksl-nl triĂ© par ordre croissant Ă  sa place et renvoie lebksl-nl nouveau tableau.bksl-nl """bksl-nl l = list(tab) #l contient les mĂȘmes Ă©lĂ©ments que tabbksl-nl l.append(a)bksl-nl i = len(l) - 2bksl-nl while a < l[i] and i >= 0:bksl-nl l[i+1] = l[i]bksl-nl l[i] = abksl-nl i = i - 1bksl-nl return lbksl-nlbksl-nltry:bksl-nl assert insere([1, 2, 4, 5], 3) == [1, 2, 3, 4, 5]bksl-nl assert insere([1, 2, 7, 12, 14, 25], 30) == [1, 2, 7, 12, 14, 25, 30]bksl-nl assert insere([2, 3, 4], 1) == [1, 2, 3, 4]bksl-nl assert insere([], 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-nlbksl-nl