L'inspiration de ce TP vient des rattrapages d'épreuve que certain·e·s ont dû passer fin novembre.
Voici quelques notions de programmation abordées au cours des deux parties de ce TP :
Vous noterez que il y a deux fichiers Rattrapage.py et RattrapageHelper.py. Le premier est le fichier à compléter ; l'autre contient des fonctions à utiliser et les données. Mais grâce à la clause import dans Rattrapage.py, vous avez accès à tout dans le fichier à compléter !
Dans cette partie I, nous allons travailler sur un dictionnaire qui associe un cours, c'est-à-dire une épreuve de rattrapage, à sa durée en minutes. Voici les données :
Cours | Durée |
---|---|
FRTC | 90 |
MODE | 180 |
ALP | 240 |
MIRESE | 90 |
TEPR | 90 |
TQGE | 60 |
DROIT | 90 |
GESTION | 60 |
DWEB | 120 |
Le dictionnaire est déjà créé et s'appelle dicoDurées
. Vous pouvez le renommer en enlevant l'accent si cela vous gêne.
Définir une procédure Python qui demande à l'utilisateur de saisir un nom de cours et qui affiche sa durée ou un message si le cours est inconnu.
Définir une procédure Python qui affiche la liste des cours, un par ligne.
Définir une fonction Python qui détermine la durée d'épreuve la plus longue et une procédure qui teste cette fonction (appel+affichage du résultat)
Supplément : La procédure qui teste affiche la durée et le nom du cours correspondant à l'épreuve la plus longue.
Coup de pouce : Grâce au dictionnaire, votre fonction de calcul, même avec le supplément, peut ne renvoyer qu'une valeur.
Info : la réponse est 240. Le cours est... ALP !
Ecrire une fonction Python qui calcule la somme des durées de toutes les épreuves. Ecrire une procédure qui teste, c'est-à-dire appelle la fonction qui calcule et affiche le résultat qu'elle renvoie.
Info : la réponse est 1020.
Ecrire une procédure Python qui demande une durée et qui affiche le nombre d'épreuves ayant cette durée.
Info : Voici les résultats pour chaque durée dans dicoDurées
(l'ordre des durées peut être quelconque) :
durées | nombre |
---|---|
90 | 4 |
180 | 1 |
240 | 1 |
120 | 1 |
60 | 2 |
L'objectif est ici d'obtenir un nouveau dictionnaire qui associe à chaque durée distincte le nombre d'épreuves ayant cette durée. C'est une généralisation de A.5.
Une fonction Python devra renvoyer ce nouveau dictionnaire et une procédure devra la tester (appel+affichage).
Le principe général est de parcourir dicoDurées
et d'obtenir la durée associée à chaque clé. Il faut alors regarder si la durée est déjà dans le nouveau dictionnaire.
En revanche, si la durée est déjà répertoriée dans le nouveau dictionnaire, il suffit de récupérer le nombre associé, de l'incrémenter de 1 (car on a rencontré une épreuve de plus ayant cette durée) et changer la valeur associée à la durée dans le nouveau dictionnaire.
Coup de pouce : Si vous avez des difficultés avec ce raisonnement, servez-vous de la boucle suivante pour initialiser le nouveau dictionnaire :
for xxx in set(dicoDurées.values()):
# associez la clé xxx à 0 dans le nouveau dictionnaire
qui permet de parcourir les valeurs de durée distinctes dans dicoDurées
. Ainsi toutes les clés possibles du nouveau dictionnaire seront connues et initialisées à zéro.