Aller au contenu

Index des sujets 2023

Corrigé sujet 01 - Année : 2023

Sujet 01 - 2023

Exercice 1

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

Note

  • On parcours le tableau par indice, si un élément est supérieur à son successeur alors on renvoie False.
  • Si on atteint la fin du tableau, on renvoie True (tous les éléments sont bien inférieurs à leur successeur)
  • On parcours jusqu'à l'avant-dernier (le dernier n'a pas de sucesseur)

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 18 (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é.