Information

Deadline Keine Frist
Abgabenlimit No limitation

Einloggen

EXAMEN_Moyen_Telecom

Vous êtes business analyst dans une société de Télécom et votre manager vous demande d’écrire une fonction Python, trouver_paires, qui, sur base d’un dictionnaire passé en argument de la fonction, (1) renvoie une liste comprenant les clés des paires de personnes partageant un même numéro de téléphone fixe et (2) renvoie également la moyenne de la taille de ces ménages/co-locataires (ensemble de personnes partageant le même numéro de téléphone).

En effet, vous disposez d’un dictionnaire, no_telephones, qui contient, comme clés, les prénoms et noms des personnes et, comme valeur associée à la clé, leur numéro de téléphone fixe mémorisé sous forme d’un string et ne comprenant que des chiffres (séquence de caractères de 0 à 9). Par exemple, no_telephone["Sofia_Dupont"] nous renvoie "012345678" (son numéro de téléphone).

Nous vous demandons d'écrire deux fonctions:

  • def trouver_paires(no_telephones) qui prend donc en argument ce dictionnaire et doit renvoyer une liste contenant toutes les paires d’éléments (sous la forme d’une liste de listes de deux éléments – les paires) ayant exactement le même numéro de téléphone, et vivant donc vraisemblablement sous le même toit. Le but est de lancer une action marketing en offrant des entrées gratuites au théâtre à certaines de ces paires de personnes.

Prenons un exemple :

no_telephones = {"Marguerite_Duras": "000", "Alain_Robbe_Grillet": "000", "Claude_Ollier": "000", "Nathalie_Sarraute": "111", "Claude_Simon": "111", "Marie_Susini": "222", "Michel_Butor": "222", "JeanMarie_LeClezio": "333"}

La fonction doit renvoyer cette liste de paires :

[["Marguerite_Duras","Alain_Robbe_Grillet"],["Marguerite_Duras","Claude_Ollier"],["Claude_Ollier","Alain_Robbe_Grillet"],["Nathalie_Sarraute","Claude_Simon"],["Marie_Susini","Michel_Butor"]]

indiquant que Marguerite_Duras possède le même numéro de téléphone que Alain_Robbe_Grillet et que Claude_Ollier, ainsi de suite. Attention, il faut éviter les paires triviales et les duplicata, càd qu’une même paire ne peut se retrouver qu’une seule fois dans la liste. Par exemple, les paires ["Michel_Butor","Marie_Susini"] et ["Marie_Susini","Michel_Butor"] ne peuvent pas se trouver toutes les deux dans la liste. De même, il faut éviter ["Marie_Susini","Marie_Susini"]. Notez que JeanMarie_LeClezio n’apparaît pas car il est seul à avoir le numéro 333 (pas de paire donc).

  • def moyenne_menages(no_telephones) qui calcule la taille moyenne des "ménages" ou "colocations", à savoir la moyenne des nombres de personnes associées à un même numéro de téléphone.

Pour ce faire, nous vous conseillons de définir un nouveau dictionnaire qui a, pour clé, un numéro de téléphone et, pour valeur, le nombre de fois que ce numéro apparaît dans le dictionnaire no_telephones (et donc le nombre de personnes qui sont associées à ce même numéro de téléphone: la taille du ménage/co-location). Les clés et valeurs de ce dictionnaire doivent être calculées à partir de no_telephones. Sur base de ce nouveau dictionnaire, il faut ensuite calculer et renvoyer la taille moyenne des ménage/co-location dans la fonction trouver_paires, à la suite du code précédent (Partie 1).

Dans notre exemple, no_telephones contient les numéros 000, 111, 222, 333. La taille des ménages/colocations est respectivement de 3, 2, 2, 1 et la moyenne à calculer est donc (3 + 2 + 2 + 1)/4.


Question 1: Implémentation

Implémentez la fonction def trouver_paires(no_telephones) qui prend en argument ce dictionnaire et doit renvoyer une liste contenant toutes les paires d’éléments (sous la forme d’une liste de listes de deux éléments – les paires) ayant exactement le même numéro de téléphone, et vivant donc vraisemblablement sous le même toit.

Question 2: Implémentation

Implémentez la fonction def moyenne_menages(no_telephones) qui calcule la taille moyenne des "ménages" ou "colocations", à savoir la moyenne des nombres de personnes associées à un même numéro de téléphone.