Aller au contenu

Ep 34

le document

l'algorithme

Issue de : 23-NSI-24⚓

EXERCICE 1⚓

Le nombre d’occurrences d’un caractùre dans une chaüne de caractùre est le nombre d’apparitions de ce caractùre dans la chaüne.

Exemples :

  • le nombre d’occurrences du caractĂšre ‘o’ dans ‘bonjour’ est 2 ;
  • le nombre d’occurrences du caractĂšre ‘b’ dans ‘BĂ©bé’ est 1 ;
  • le nombre d’occurrences du caractĂšre ‘B’ dans ‘BĂ©bé’ est 1 ;
  • le nombre d’occurrences du caractĂšre ‘ ‘ dans ‘Hello world !’ est 2.

On cherche les occurrences des caractùres dans une phrase. On souhaite stocker ces occurrences dans un dictionnaire dont les clefs seraient les caractùres de la phrase et les valeurs l’occurrence de ces caractùres.

Par exemple : avec la phrase 'Hello world !' le dictionnaire est le suivant :

🐍 Script Python
nbr_occurrences('Hello world !')
>>> {'H': 1,'e': 1,'l': 3,'o': 2,' ': 2,'w': 1,'r': 1,'d': 1,'!': 1}

L’ordre des clefs n’a pas d’importance.

Écrire une fonction nbr_occurrences prenant comme paramùtre une chaüne de caractùres chaine et renvoyant le dictionnaire des nombres d’occurrences des caractùres de cette chaüne.

RĂ©ponse

Complétez le code ci-dessous

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



Solution

###
def nbrpy-undoccurrences(chaine):bksl-nl nbpy-undocc = {}bksl-nl for caractere in chaine:bksl-nl if caractere in nbpy-undocc:bksl-nl nbpy-undocc[caractere] += 1bksl-nl else:bksl-nl nbpy-undocc[caractere] = 1bksl-nl return nbpy-undoccbksl-nlbksl-nltry:bksl-nl assert nbrpy-undoccurrences('Hello world !') == {'H': 1,'e': 1,'l': 3,'o': 2,' ': 2,'w': 1,'r': 1,'d': 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



EXERCICE 2⚓

La fonction fusion prend deux listes tab1, tab2 d’entiers triĂ©es par ordre croissant et les fusionne en une liste triĂ©e tab12 qu’elle renvoie.

Compléter le code de la fonction fusion est :

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def fusion(tab1,tab2):
    '''Fusionne deux tableaux triés et renvoie
    le nouveau tableau trié.'''
    n1 = len(tab1)
    n2 = len(tab2)
    tab12 = [0] * (n1 + n2)
    i1 = 0
    i2 = 0
    i = 0
    while i1 < n1 and ...: 
        if tab1[i1] < tab2[i2]:
            tab12[i] = ... 
            i1 = ... 
        else:
            tab12[i] = tab2[i2]
            i2 = ... 
        i += 1
    while i1 < n1:
        tab12[i] = ... 
        i1 = i1 + 1
        i = ... 
    while i2 < n2:
        tab12[i] = ... 
        i2 = i2 + 1
        i = ... 
    return tab12

Exemple :

🐍 Script Python
>>> fusion([1,2,3],[])
[1, 2, 3]
>>> fusion([], [])
[]
>>> fusion([1, 6, 10],[0, 7, 8, 9])
[0, 1, 6, 7, 8, 9, 10]
RĂ©ponse

Complétez le code ci-dessous

###
def fusion(tab1,tab2):bksl-nl '''Fusionne deux tableaux triés et renvoiebksl-nl le nouveau tableau trié.'''bksl-nl n1 = len(tab1)bksl-nl n2 = len(tab2)bksl-nl tab12 = [0] py-str (n1 + n2)bksl-nl i1 = 0bksl-nl i2 = 0bksl-nl i = 0bksl-nl while i1 < n1 and ...: bksl-nl if tab1[i1] < tab2[i2]:bksl-nl tab12[i] = ... bksl-nl i1 = ... bksl-nl else:bksl-nl tab12[i] = tab2[i2]bksl-nl i2 = ... bksl-nl i += 1bksl-nl while i1 < n1:bksl-nl tab12[i] = ... bksl-nl i1 = i1 + 1bksl-nl i = ... bksl-nl while i2 < n2:bksl-nl tab12[i] = ... bksl-nl i2 = i2 + 1bksl-nl i = ... bksl-nl return tab12bksl-nl



Solution

###
def fusion(lst1, lst2):bksl-nl n1 = len(lst1)bksl-nl n2 = len(lst2)bksl-nl lst12 = [0] py-str (n1 + n2)bksl-nl i1 = 0bksl-nl i2 = 0bksl-nl i = 0bksl-nl while i1 < n1 and i2 < n2 :bksl-nl if lst1[i1] < lst2[i2]:bksl-nl lst12[i] = lst1[i1]bksl-nl i1 = i1 + 1bksl-nl else:bksl-nl lst12[i] = lst2[i2]bksl-nl i2 = i2 + 1bksl-nl i += 1bksl-nl while i1 < n1:bksl-nl lst12[i] = lst1[i1]bksl-nl i1 = i1 + 1bksl-nl i = i + 1bksl-nl while i2 < n2:bksl-nl lst12[i] = lst2[i2]bksl-nl i2 = i2 + 1bksl-nl i = i + 1bksl-nl return lst12bksl-nlbksl-nltry:bksl-nl assert fusion([1,2,3],[]) == [1, 2, 3]bksl-nl assert fusion([], []) == []bksl-nl assert fusion([1, 6, 10],[0, 7, 8, 9]) == [0, 1, 6, 7, 8, 9, 10]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