Dictionnaires
Tris
Ep 06
le document
l'algorithme
Issue de : 23-NSI-01
EXERCICE 1
Programmer la fonction verifie
qui prend en paramÚtre un tableau de valeurs numériques et qui renvoie True
si ce tableau est triĂ© dans lâordre croissant, False
sinon.
Exemples :
đ Script Python Exemples :
>>> verifie ([ 0 , 5 , 8 , 8 , 9 ])
True
>>> verifie ([ 8 , 12 , 4 ])
False
>>> verifie ([ - 1 , 4 ])
True
>>> verifie ([ 5 ])
True
RĂ©ponse
Complétez le code ci-dessous
# Mettez votre code icibksl-nlbksl-nl
Solution
def verifie(tab):bksl-nl for i in range(1, len(tab)):bksl-nl if tab[i] < tab[i-1]:bksl-nl return Falsebksl-nl return Truebksl-nlbksl-nltry:bksl-nl assert verifie([0, 5, 8, 8, 9]) == Truebksl-nl assert verifie([8, 12, 4]) == Falsebksl-nl assert verifie([-1, 4]) == Truebksl-nl assert verifie([5]) == Truebksl-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 dans cet exercice lâĂ©lection dâun vainqueur Ă lâissue dâun vote.
Les rĂ©sultats du vote sont stockĂ©s dans un tableau : chaque vote exprimĂ© est le nom dâun ou dâune candidate.
Par exemple, les résultats pourraient correspondre au tableau :
đ Script Python urne = [ 'A' , 'A' , 'A' , 'B' , 'C' , 'B' , 'C' , 'B' , 'C' , 'B' ]
indiquant que 3 candidats ont obtenus au moins un vote chacun : A, B et C.
On cherche Ă dĂ©terminer le ou les candidats ayant obtenu le plus de suffrages. Pour cela, on propose dâĂ©crire deux fonctions :
la fonction depouille doit permettre de compter le nombre de votes exprimés pour chacune des issues. Elle prend en paramÚtre un tableau et renvoie le résultat dans un dictionnaire ont les clés sont les noms des issues et les valeurs le nombre de votes en leur faveur ;
la fonction vainqueurs doit dĂ©signer le nom du ou des gagnants. Elle prend en paramĂštre un dictionnaire non vide dont la structure est celle du dictionnaire renvoyĂ© par la fonction depouille et renvoie un tableau. Ce tableau peut donc contenir plusieurs Ă©lĂ©ments sâil y a des artistes ex-aequo.
ComplĂ©ter les fonctions depouille et vainqueurs ci-aprĂšs pour quâelles renvoient les rĂ©sultats attendus.
đ Script Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 def depouille ( urne ):
'''prend en paramĂštre une liste de suffrages et renvoie un
dictionnaire avec le nombre de voix pour chaque candidat'''
resultat = ...
for bulletin in urne :
if ... :
resultat [ bulletin ] = resultat [ bulletin ] + 1
else :
...
return resultat
def vainqueurs ( election ):
'''prend en paramĂštre un dictionnaire non vide avec le nombre de voix
pour chaque candidat et renvoie la liste des vainqueurs'''
nmax = 0
for candidat in election :
if ... > ... :
nmax = ...
liste_finale = [ nom for nom in election if ... ]
return ...
đ Script Python >>> depouille ([ 'A' , 'B' , 'A' ])
{ 'A' : 2 , 'B' : 1 }
>>> depouille ([])
{}
>>> election = depouille ([ 'A' , 'A' , 'A' , 'B' , 'C' ,
'B' , 'C' , 'B' , 'C' , 'B' ])
>>> election
{ 'A' : 3 , 'B' : 4 , 'C' : 3 }
>>> vainqueurs ( election )
[ 'B' ]
>>> vainqueurs ({ 'A' : 2 , 'B' : 2 , 'C' : 1 })
[ 'A' , 'B' ]
RĂ©ponse
Complétez le code ci-dessous
def depouille(urne):bksl-nl '''prend en paramĂštre une liste de suffrages et renvoie un bksl-nl dictionnaire avec le nombre de voix pour chaque candidat'''bksl-nl resultat = ... bksl-nl for bulletin in urne:bksl-nl if ...: bksl-nl resultat[bulletin] = resultat[bulletin] + 1bksl-nl else:bksl-nl ...bksl-nl return resultatbksl-nlbksl-nldef vainqueurs(election):bksl-nl '''prend en paramĂštre un dictionnaire non vide avec le nombre de voixbksl-nl pour chaque candidat et renvoie la liste des vainqueurs'''bksl-nl nmax = 0bksl-nl for candidat in election:bksl-nl if ... > ... : bksl-nl nmax = ... bksl-nl listepy-undfinale = [ nom for nom in election if ... ] bksl-nl return ... bksl-nlbksl-nl
Solution
urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']bksl-nlbksl-nldef depouille(urne):bksl-nl '''prend en paramĂštre une liste de suffrages et renvoie un bksl-nl dictionnaire avec le nombre de voix pour chaque candidat'''bksl-nl resultat = {}bksl-nl for bulletin in urne:bksl-nl if bulletin in resultat:bksl-nl resultat[bulletin] = resultat[bulletin] + 1bksl-nl else:bksl-nl resultat[bulletin] = 1bksl-nl return resultatbksl-nlbksl-nldef vainqueurs(election):bksl-nl '''prend en paramĂštre un dictionnaire non vide avec le nombre de voixbksl-nl pour chaque candidat et renvoie la liste des vainqueurs'''bksl-nl nmax = 0bksl-nl for candidat in election:bksl-nl if election[candidat] > nmax :bksl-nl nmax = election[candidat]bksl-nl listepy-undfinale = [ nom for nom in election if election[nom] == nmax] bksl-nl return listepy-undfinalebksl-nlbksl-nltry:bksl-nl assert depouille([ 'A', 'B', 'A' ]) == {'A': 2, 'B': 1}bksl-nl assert depouille([]) == {}bksl-nl bksl-nl election = depouille(['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B'])bksl-nl assert election == {'A': 3, 'B': 4, 'C': 3}bksl-nl assert vainqueurs(election) == ['B']bksl-nl assert vainqueurs({ 'A' : 2, 'B' : 2, 'C' : 1}) == ['A', 'B']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