Parcours de dictionnaire
Parcours simple
Sur le réseau social TipTop, on s'intéresse au nombre de « like » des abonnés. Les données sont stockées dans un dictionnaire où les clés sont les pseudos et les valeurs correspondantes sont les nombres de « like » comme ci-dessous :
| 🐍 Code Python | |
|---|---|
1 | |
-
Écrire une fonction
nb_likesqui étant donné un dictionnairelikeset lenomd'une personne, renvoie le nombre de likes denom. Sinomn'est pas présent danslikes, alors la fonction renverra0.🐍 Code Python 1 2 3 4
def nb_likes(likes, nom): """ {str:int}, str -> int Renvoie le nombre de likes de nom """ pass🐍 Code Python 1 2
print(nb_likes(likes, "Ada")) print(nb_likes(likes, "Esther"))⚙️ Résultat201 0 -
Écrire une fonction
ajoute_likesqui étant donné un dictionnairelikes, lenomd'une personne et un entierlajoutelau nombre de likes denom.🐍 Code Python 1 2 3 4
def ajoute_likes(likes, nom, l): """ {str: int}, str, int -> None Ajoute l au nombre de likes de nom """ pass🐍 Code Python 1 2 3 4
print(likes) ajoute_likes(likes, 'Bob', 42) ajoute_likes(likes, 'Esther', 128) print(likes)⚙️ Résultat{'Bob': 102, 'Ada': 201, 'Charline': 103, 'Daniel': 201} {'Bob': 144, 'Ada': 201, 'Charline': 103, 'Daniel': 201, 'Esther': 128} -
Écrire une fonction
top_likesqui prend en argument un dictionnairelikesnon-vide dont les clés sont des chaines de caractères et les valeurs associées des entiers positifs ou nuls, et qui renvoie lenomd'une personne danslikesqui possède le plus de likes.En cas d'égalité entre les deux personnes les plus "likées", on en choisira l'une des deux sans contrainte particulière.
🐍 Code Python 1 2 3 4 5 6
def top_likes(likes): """ {str: int} -> str Renvoie le nom d'une personne possédant le plus de likes """ nom = '' maxi = 0 # À compléter🐍 Code Python 1print(top_likes(likes))⚙️ RésultatAda -
Modifier le code de la fonction
top_likesen une fonctiontop_likes_mieuxde telle sorte quetop_likes_mieux(likes)renvoie la liste des personnes qui possèdent le plus de likes.🐍 Code Python 1 2 3 4 5 6
def top_likes_mieux(likes): """ {str: int} -> [str] Renvoie la liste des personnes possédant le plus de likes """ noms = [] maxi = 0 # À compléter🐍 Code Python 1print(top_likes_mieux(likes))⚙️ Résultat['Ada', 'Daniel']
Voteurs
Les résultats d'une élection sont stockés dans une liste de la forme :
| 🐍 Code Python | |
|---|---|
1 | |
Le nom des candidat.e.s n'est pas connu à l'avance. On suppose que tous les candidat.e.s reçoivent un nombre de vote différent.
-
Écrire une fonction
compte_voixqui prend en argument une liste devoteset qui renvoie un dictionnaire de telle sorte que :- les clés du dictionnaires correspondent aux noms des personnes pour qui il a été voté lors de cette élection ;
- à chaque clé
kdu dictionnaire on associe le nombre de voix queka reçu lors de l'élection.
🐍 Code Python 1 2 3 4
def compte_voix(votes): """ [str] -> {str: int} Renvoie le decompte des voix des votes """ # À compléter🐍 Code Python 1 2
decompte = compte_voix(votes) print(decompte)⚙️ Résultat{'Ali': 3, 'Bob': 1, 'Mél': 2} -
Écrire une fonction
pourcentagequi prend en argument un dictionnairedecompteet lenomd'une personne et qui renvoie le pourcentage (arrondi au centième) des votes pournomdans ledecompte.🐍 Code Python 1 2 3 4
def pourcentage(decompte, nom): """ {str: int}, str -> float Renvoie le pourcentage de votes obtenu par nom dans décompte """ # À compléter🐍 Code Python 1print(pourcentage(decompte, 'Mél'))⚙️ Résultat33.33 -
Écrire une fonction
resultat_second_tourqui prend en argument un dictionnairedecomptecorrespondant aux votes ayant eu lieu au second tour et qui renvoie le nom de la personne ayant obtenu le plus de votes au second tour : il s'agit alors de la personne élue.🐍 Code Python 1 2 3 4 5 6
def resultat_second_tour(decompte): """ {str: int} -> str Renvoie le nom de la personne ayant obtenu le plus de votes """ decompte[''] = 0 meilleur = '' # À compléter🐍 Code Python 1print(resultat_second_tour(decompte))⚙️ RésultatAli -
On souhaite pouvoir gérer informatiquement le premier tour.
-
Écrire une fonction
deux_meilleursqui prend en argument un dictionnairedecompteet qui renvoie un dictionnaire possédant les clés'1er'et'2nd'associées respectivement au nom des personnes arrivées première et deuxième dans le décompte des votes de l'élection.🐍 Code Python 1 2 3 4 5 6
def deux_meilleurs(decompte): """ {str: int} -> {str: str} Renvoie un dictionnaire correspondant aux deux votes majoritaires """ decompte[''] = 0 podium = {'1er': '', '2nd': ''} # À compléter🐍 Code Python 1print(deux_meilleurs(decompte))⚙️ Résultat{'1er': 'Ali', '2nd': 'Mél'} -
Écrire une fonction
resultat_premier_tourqui étant donné un dictionnairedecomptecorrespondant aux votes ayant eu lieu au premier tour renvoie :- une liste constituée du nom de la personne élue si une personne a obtenu plus de $50\%$ des voix au premier tour ;
- une liste constituée des noms des deux personnes présentes au second tour si personne n'a obtenu plus de $50\%$ des voix au premier tour.
🐍 Code Python 1 2 3
def resultat_premier_tour(decompte): """ {str: int} -> [str] Renvoie la ou les personnes gagnantes au premier tour """🐍 Code Python 1print(resultat_premier_tour(decompte))⚙️ Résultat['Ali', 'Mél']
-
Notes again mais mieux
Un professeur de NSI décide d'utiliser python pour gérer informatiquement les notes de ses élèves. On suppose que toutes les notes ont le même coefficient. On utilise pour stocker les notes un dictionnaire : les clés sont les prénoms des élèves de la classe, la valeur associée à la clé k la liste des notes obtenues par l'élève.
| 🐍 Code Python | |
|---|---|
1 2 3 4 5 | |
-
Écrire une fonction
ajoute_notequi prend en argument un dictionnaire denoteset unprenomet un entiernet qui ajoute la notenà la liste de notes deprenom.Attention. Les clés du dictionnaire peuvent être amenées à évoluer lors de l'arrivée d'un nouvel élève. Ainsi, il sera nécessaire de prendre en compte le cas où
prenomn'est pas une clé denotes.🐍 Code Python 1 2 3 4
def ajoute_note(notes, prenom, n): """ {str: [int]}, str, int -> None Ajoute n à la liste de notes de prenom """ pass🐍 Code Python 1 2 3
ajoute_note(notes, "Aba", 17) ajoute_note(notes, "David", 14) print(notes)⚙️ Résultat{'Aba': [15, 16, 12, 17], 'Bouba': [19, 20, 20, 20], 'Cem': [9, 13, 14, 15], 'David': [14]} -
La fin du trimestre arrivant, le professeur souhaite obtenir des informations sur les moyennes de ses élèves.
-
Écrire une fonction
moyenne_elevequi prend en argument un dictionnaire denotes, leprenomd'un élève, et qui renvoie sa moyenne actuelle.On rappelle que toutes les notes sont affectées du même coefficient.
-
Écrire une fonction
moyennequi prend en argument un dictionnaire denoteset qui renvoie un dictionnaire dont :- les clés sont les prénoms des élèves de la classe ;
- la valeur associée à la clé
kest la moyenne de l'élèvek
-
Écrire une fonction
moyenne_classequi prend en argument un dictionnaire denoteset qui renvoie la moyenne des moyennes des élèves. Chaque moyenne sera pondérée par le nombre de notes. Par exemple, dans l'exemple ci-dessus, la moyenne de David a pour coefficient 1, la moyenne des autres élèves a pour coefficient 4.
-