Dictionnaires : NBA
L'usage de la calculatrice n'est pas autorisé
L'utilisation des fonctions sum
, max
ou count
est interdite.
Durée: 1h
Exercice 1 : Création d'une liste de joueurs (6 points)
On souhaite représenter les joueurs d'une équipe de basketball sous forme de dictionnaire. Chaque joueur est défini par :
- son nom (chaîne de caractères),
- son numéro (entier),
- son poste (chaîne parmi : "meneur", "arrière", "ailier", "pivot", "ailier fort"),
- et son nombre de points marqués cette saison.
Question 1 : creer_joueur
Écrivez une fonction creer_joueur(nom, numero, poste, points)
qui prend en paramètres les informations d’un joueur et retourne un dictionnaire représentant ce joueur.
Par exemple, Victor Wembanyama a pour numéro le 1, est ailier fort et a marqué 1300 points cette saison, le dictionnaire créé est donc:
wemby={'nom':'Victor Wembanyama','numero':1,'poste'="ailier fort",points:1300}
Corrigé
def creer_joueur(nom, numero, poste, points):
return {"nom": nom, "numero": numero, "poste": poste, "points": points}
Question 2 : création des équipes
À partir des informations suivantes, donnez un programme pour créer un dictionnaire pour chaque joueur, puis regroupez-les dans une liste appelée equipe
:
-
LeBron James : numéro 6, ailier fort, 1450 points
-
Stephen Curry : numéro 30, meneur, 1800 points
-
Kevin Durant : numéro 7, ailier, 1700 points
-
Joel Embiid : numéro 21, pivot, 1550 points
Corrigé
lebron = creer_joueur("LeBron James", 6, "ailier fort", 1450)
curry = creer_joueur("Stephen Curry", 30, "meneur", 1800)
durant = creer_joueur("Kevin Durant", 7, "ailier", 1700)
embiid = creer_joueur("Joel Embiid", 21, "pivot", 1550)
equipe = [lebron, curry, durant, embiid]
Exercice 2 : Requêtes sur l’équipe (4 points)
On utilise la liste equipe
créée dans l’exercice 1.
Question 3
Écrivez une fonction meilleur_marqueur(equipe)
qui retourne le dictionnaire du joueur ayant marqué le plus de points.
Corrigé
def meilleur_marqueur(equipe):
meilleur = {"points":0} # On suppose que le premier joueur est le meilleur au départ
for joueur in equipe:
if joueur["points"] > meilleur["points"]:
meilleur = joueur
return meilleur
Question 4
Écrivez une fonction joueurs_par_poste(equipe, poste)
qui prend un poste en paramètre et retourne une liste des noms des joueurs occupant ce poste.
Corrigé
def joueurs_par_poste(equipe, poste):
joueurs = []
for joueur in equipe:
if joueur["poste"] == poste:
joueurs.append(joueur["nom"])
return joueurs
Exercice 3 : Statistiques avancées (8 points)
Question 5
Écrivez une fonction points_totaux(equipe)
qui retourne la somme des points marqués par tous les joueurs de l’équipe.
Corrigé
def points_totaux(equipe):
total = 0
for joueur in equipe:
total += joueur["points"]
return total
Question 6
Écrivez une fonction moyenne_points(equipe)
qui retourne la moyenne des points marqués par par tous les joueurs de l'équipe.
Corrigé
def moyenne_points(equipe):
total = points_totaux(equipe)
return total / len(equipe)
Question 7
Écrivez une fonction joueurs_au_dessus_de(equipe, seuil)
qui retourne une liste des noms des joueurs ayant marqué plus de seuil
points.
Corrigé
def joueurs_au_dessus_de(equipe, seuil):
joueurs = []
for joueur in equipe:
if joueur["points"] > seuil:
joueurs.append(joueur["nom"])
return joueurs
Question 8
Écrivez une fonction conf_west(liste)
qui a partir d'une liste d'équipes, retourne les noms des meilleurs joueurs pour chaque poste (ceux qui ont marqué le plus de points).
Corrigé
def conf_west(liste):
meilleurs_joueurs = {}
# Parcours de chaque Ă©quipe
for equipe in liste:
# Parcours de chaque joueur dans l'Ă©quipe
for joueur in equipe:
poste = joueur["poste"]
# Si ce poste n'a pas encore été vu ou si ce joueur est meilleur
if poste not in meilleurs_joueurs or joueur["points"] > meilleurs_joueurs[poste]["points"]:
meilleurs_joueurs[poste] = joueur
# Retourner uniquement les noms des meilleurs joueurs sous forme de liste
return [joueur["nom"] for joueur in meilleurs_joueurs.values()]