Dictionnaires
Listes opérations
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