Supposons qu'on vous donne un fichier contenant une liste de personnes avec des montants d'argent qu'ils ont gagnés à différents moments au cours du dernier mois. Le fichier a le format suivant :
Sophie 4000 Lisa 4500 Claude 10 Sophie 200 Sophie 5000 Lisa 3000 Stéphanie 300 Stéphanie 300 # à ignorer Lisa 2000 Jean 50 Jean $50 Claude 30 Lisa 300 Stéphanie 6000
Dans ce format, chaque ligne consiste d'un nom d'une personne suivi par un nombre entier positif (0 ou plus) représentant le montant qu'elle a gagné à un certain moment. Si un même nom se trouve sur plusieurs lignes différentes, il s'agit de la même personne qui a gagné plusieurs montants. La somme de tous ces montants est le montant total que cette personne a gagné.
Écrivez une fonction argent_personne(nom_fichier) qui lit le fichier des gains par personne
et retourne un dictionnaire associant chaque personne avec le montant qu'il a gagné au total (y compris si c'est 0).
Si le fichier est vide ou si le fichier n'existe pas, la fonction renvoie un dictionnaire vide.
Si le fichier n'est pas vide, vous ne devez considérer que les lignes qui respectent exactement le format donné, c'est-à-dire un nom (une chaîne de caractères) suivi par un espace et un nombre entier positif. Les lignes qui ne suivent pas ce schéma doivent être ignorées. Dans l'exemple, les lignes Stéphanie 300 # à ignorer et Jean $50 sont à ignorer car elles ne respectent pas exactement le format souhaité.
Pour notre exemple, pour Sophie la somme est 9200 (4000+200+5000), pour Lisa 9800 (4500+3000+2000+300), pour Claude 40 (10+30) pour Jean 50 et pour Stéphanie 6300 (300+6000). Donc pour ce fichier, la fonction doit retourner le dictionnaire :
{'Sophie': 9200, 'Lisa': 9800, 'Claude': 40, 'Stéphanie': 6300, 'Jean': 50}
Conseils :
- Commencez par un code qui fait l'hypothèse que toutes les lignes sont dans le format correct. Un code qui marche mais qui ne gère pas les lignes incorrectes recevra déjà quelques points.
- Faites une fonction auxiliaire pour vérifier la validité d'une ligne donnée, et ignorez les lignes invalides.
INGInious