Sujet n°1
Sujet original
Pour télécharger l'énoncé original, cliquer ici.
Exercice n°1☘
Programmer la fonction verifie
qui prend en paramètre un tableau de valeurs
numériques non vide et qui renvoie True
si ce tableau est trié dans l’ordre
croissant, False
sinon.
Exemples
>>> verifie([0, 5, 8, 8, 9])
True
>>> verifie([8, 12, 4])
False
>>> verifie([-1, 4])
True
>>> verifie([5])
True
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Exercice n°2☘
Les résultats d'un vote ayant trois issues possibles 'A', 'B' et 'C' sont stockés dans un tableau.
Exemple
urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']
Commentaires sur l'énoncé original
Dans l'énoncé, Urne
est écrit avec une majuscule tandis que dans
l'exemple plus loin et dans le code, urne
est écrit avec une minuscule.
Urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']
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 dont les clés sont les noms des issues et les valeurs
le nombre de votes en leur faveur.
La fonction vainqueur
doit désigner le nom du ou des gagnants. Elle prend
en paramètre un dictionnaire 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 ex-aequo.
Compléter les fonctions depouille
et vainqueur
ci-après pour qu’elles
renvoient les résultats attendus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Commentaires sur le code original
-
Pour télécharger l'original du fichier à compléter, cliquer ici.
-
Nommer une variable
vainqueur
comme le nom de la fonction qui la « contient » n'est vraiment pas recommandé...
Exemples
>>> urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']
>>> election = depouille(urne)
>>> election
{'B': 4, 'A': 3, 'C': 3}
>>> vainqueur(election)
['B']
Une solution
def depouille(urne):
resultat = dict()
for bulletin in urne:
if bulletin in resultat.keys():
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 :
nmax = election[candidat]
vainqueur = candidat
liste_finale = [nom for nom in election if election[nom] == nmax]
return liste_finale
if __name__ == '__main__':
# Exemple de l'énoncé
urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']
election = depouille(urne)
print(election == {'B': 4, 'A': 3, 'C': 3})
print(vainqueur(election) == ['B'])
# Exemple supplémentaire
urne = ['B', 'B', 'B', 'C', 'B', 'C', 'A', 'A', 'B', 'B', 'C', 'B', 'C', 'C', 'A']
election = depouille(urne)
print(election == {'B': 7, 'C': 5, 'A': 3})
print(vainqueur(election) = ['B'])