Aller au contenu

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