Aller au contenu

Index des sujets 2022

Corrigé sujet 37 - Année : 2022

Sujet 37 - 2022

Exercice 1

1
2
3
4
5
def verifie(liste):
    for i in range(len(liste)-1):
        if liste[i]>liste[i+1]:
            return False
    return True

Commentaire

On se contente de vérifier que chaque élément est bien inférieur à celui qui le suit dans le tableau.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']

def depouille(urne):
    resultat = {} #(1)
    for bulletin in urne:
        if bulletin in resultat: #(2)
            resultat[bulletin] = resultat[bulletin] + 1
        else:
            resultat[bulletin] = 1
    return resultat

def vainqueur(election):
    vainqueur = ''
    nmax = 0
    for candidat in election:
        if election[candidat] > nmax : #(3)
            nmax = election[candidat]
            vainqueur = candidat
    liste_finale = [nom for nom in election if election[nom] == nmax] #(4)
    return liste_finale
  1. Initialisation à un dictionnaire vide.
  2. Si la clé existe dans le dictionnaire on incrémente sa valeur de 1, sinon on ajoute cette clé avec la valeur 1 (c'est le premier vote pour ce groupe)
  3. Algorithme classique de recherche du maximum en parcourant toutes les valeurs
  4. On construit donc ici par compréhension la liste des candidats (car il peut y en avoir plusieurs) ayant le nombre de votes maximales

Attention

La variable vainqueur définie à la ligne 15 (et qui porte le même nom que la fonction) peut laisser penser qu'il y en a un seul ! Alors qu'on construit justement une liste pour gérer les cas d'ex-aequo, cette variable n'a en fait aucune utilité.