Dictionnaires

Consignes

Dans ce TP, les différents exercices sont indépendants.

Enregistrez chaque fichier dans le dossier [Dictionnaires] sous le nom donné à l'exercice : dictionnaire.py, titanic.py, scrabble.py, occurence.py...

Exercice n°1 : Dictionnaire Français / Anglais

On souhaite réaliser un dictionnaire Français / Anglais, afin que l'utilisateur demande un mot en français et l'ordinateur répond par la traduction anglaise du mot.

Le dictionnaire Python contiendra donc des paires de clé/valeur définies telles que :

  • La clé est un mot en français.

  • La valeur est la traduction anglaise du mot associé à sa clé.

Question

  1. Créer un dictionnaire dico_fr_en de 10 éléments permettant cette traduction.

  2. Rédiger une fonction traduction() qui prend comme argument le terme français et renvoie le terme anglais.

  3. Enrichir le programme avec une question à l'utilisateur pour connaître le mot à traduire. Le programme doit afficher l'ensemble des mots français disponibles.

Indice

Question 1 : Pour créer ce dictionnaire, il faut utiliser la syntaxe vue en cours :

1
dico_fr_en = {
2
    "bonjour": "hello",
3
    "ordinateur": "computer",
4
    ...
5
}

Indice

Question 2 : Le terme français est utilisé en tant que clé, il faut donc vérifier que cette clé existe avant de la réupérer.

Indice

Question 3 : On doit utiliser la fonction input() pour demander un mot à l'utilisateur. Pour consulter l'ensemble des mots disponibles, on devra parcourir le dictionnaire.

Exercice n°2 : Scrabble

On dispose du dictionnaire suivant, dans lequel chaque lettre de l'alphabet (en majuscules) est associé au nombre de points qui lui est attribué au scrabble :

1
scrabble = {'A': 1, 'B': 3, 'C': 3, 'D': 2, 'E': 1, 'F': 4, 'G': 2, 'H': 4,
2
            'I': 1, 'J': 8, 'K': 10, 'L': 1, 'M': 2, 'N': 1, 'O': 1,
3
            'P': 3, 'Q': 8, 'R': 1, 'S': 1, 'T': 1, 'U': 1, 'V': 4,
4
            'W': 10, 'X': 10, 'Y': 10, 'Z': 10}

Télécharger ce fichier qui sera à compléter selon les questions ci-dessous.

Question

  1. Compléter la définition de la fonction valeur_mot(mot) qui prend en paramètre une chaîne de caractères constituée de lettres majuscules et qui renvoie le nombre de points que rapporterait ce mot au scrabble.

  2. Compléter la définition de la fonction meilleure_lettre() qui prend en paramètre un tableau dont les éléments sont des lettres majuscules et qui renvoie celle ayant la plus forte valeur au scrabble.

    En cas d'égalité, c'est la lettre ayant l'indice le plus élevé dans le tableau qui est renvoyée.

Indice

Question 1 : Le nombre de points d'un mot se calcule grâce à la somme des points de chaque lettre du mot. Il faut donc parcourir toutes les lettres du mot et consulter sa valeur dans le dictionnaire.

Indice

Question 2 : Simple parcours de liste où on regarde chaque éléments dans notre dictionnaire scrabble. La spécificité est que la meilleure lettre doit être sauvegardée dans une variable, et on compare sa valeur à chaque nouvelle lettre dans la liste.

Cela ressemble à la fonction indice_min sauf que :

  • on ne veut pas le minimum mais le maximum ;

  • on ne regarde pas la valeur de l'élément, mais sa valeur via le dictionnaire ;

  • on ne renvoie pas l'indice mais l'élément (la lettre).

Exercice n°3 : Titanic

Le Titanic appareille de Southampton (Angleterre) le mercredi 10 avril à 12 h 15.

Six heures plus tard, à 18 h 15, il fait escale dans la rade de Cherbourg. Il y débarque 24 passagers et en embarque 274, amenés par les transbordeurs Nomadic et Traffic. Il appareille à 20 h 10.

Le Titanic fait route vers l'Irlande. Il arrive à Queenstown (aujourdhui Cobh) le 11 avril à 11 h 30. Il débarque 7 passagers et en embarque 120. À 13 h 30, le paquebot appareille et entame sa traversée de l'Atlantique vers New York.

Le 14 avril, à 23 h 40 (heure locale, GMT-3), il percute un iceberg au large de Terre-Neuve. Il sombre le 15 avril à 2 h 20, causant la mort de 1 524 personnes.

(source wikimanche)

On souhaite analyser les données de bord du Titanic lors de cette aventure. On dispose d'une liste Python avec des informations sur les passagers. Chaque élément de la liste est un passager représenté par un dictionnaire. En voici un extrait :

1
passagers = [
2
    {'PassengerId': 1,
3
     'Survived': False,
4
     'Pclass': 3,
5
     'Name': 'Braund, Mr. Owen Harris',
6
     'Sex': 'male',
7
     'Age': 22.0,
8
     'SibSp': 1,
9
     'Parch': 0,
10
     'Ticket': 'A/5 21171',
11
     'Fare': 7.25,
12
     'Embarked': 'S'
13
    },
14
    {'PassengerId': 2,
15
     'Survived': True,
16
     'Pclass': 1,
17
     'Name': 'Cumings, Mrs. John Bradley (Florence Briggs Thayer)',
18
     'Sex': 'female',
19
     'Age': 38.0,
20
     'SibSp': 1,
21
     'Parch': 0,
22
     'Ticket': 'PC 17599',
23
     'Fare': 71.2833,
24
     'Cabin': 'C85',
25
     'Embarked': 'C'
26
    },
27
    ...
28
]

Télécharger ce fichier dans le même dossier que votre code Python.

Le fichier ci-dessus contient la liste non-exhaustive de 891 passagers. En raison de sa taille importante, son ouverture peut faire planter votre logiciel de programmation. Pensez donc à enregistrer votre travail régulièrement !

En cas d'absence d'information, la clé n'est pas présente ! Vous devez donc vous assurer que la clé existe avant de récupérer sa valeur.

Afin d'importer ces données, ajouter le code suivant dans votre fichier titanic.py :

1
from donnees_titanic import passagers

Désormais, la variable passagers contient cette liste de dictionnaires.

Question

  1. Rédiger un programme qui :

    • affiche le nombre de passagers dans la liste (891) ;

    • vérifie que le passager 54 est :

      Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson) agée de 29 ans, embarquée à Southampton en classe 2 et a survécu au naufrage ;

    • affiche le nombre de survivants (342).

  2. Sachant qu'il y a trois classes (1, 2 et 3), écrire un programme qui affiche le pourcentage de survivants par classe.

  3. Sachant qu'un passager embarqué à Cherbourg est représenté par la valeur 'C' associée à la clé 'Embarked', écrire un programme qui donne le nombre de survivants embarqués à Cherbourg (18%).

Indice

Question 1 :

  • Le nombre de passagers correspond au nombre d'éléments dans notre liste passagers.

  • Pour chercher un passager, on doit parcourir tous les éléments de la liste et vérifier pour chaque élément (qui est donc un dictionnaire) si la valeur de clé 'PassengerId' vaut 54, auquel cas on peut afficher les informations.

  • De même, il faut parcourir toutes les données, en stockant dans une variable (initialement initialisée à zéro) le nombre de survivants.

Indice

Question 2 : Il faut encore parcourir tous les passagers, et stocker dans des variables le nombre de passagers par classe et le nombre de survivants par classe. Ensuite, un simple calcul de pourcentage, et le tour est joué !

Indice

Question 3 : Et c'est encore pareil ! Il faut parcourir tous les passagers, et stocker dans des variables le nombre de passagers embarqués à Cherbourg et le nombre de survivants embarqués à Cherbourg.

Exercice bonus : Compter des occurrences

On souhaite écrire un programme qui compte les occurences de mots dans un texte afin de connaître les mots les plus fréquents.

Question

  1. Compléter la définition de la fonction occurences(sequence) en respectant les spécifications.

  2. Compléter la définition de la fonction compte_mots(phrase) en respectant les spécifications.

  3. Télécharger le texte du « Petit Chaperon Rouge » ci-dessous dans le même dossier que le code Python.

    Dans le programme principal, importer ce texte puis écrire les instructions nécessaires pour afficher, dans la console, chaque mot de ce texte suivi de son nombre d'occurrences dans le texte.

  4. Compléter la définition de la fonction compte_tous_mots(phrase) en respectant ses spécifications.

    Appliquer ensuite, dans le programme principal, cette fonction au texte du « Petit Chaperon Rouge ».

  5. Compléter la définition de la fonction plus_frequent(dico, longueur) qui prend en paramètre un dictionnaire dont les clés sont des chaînes de caractères et un entier strictement positif longueur.

    Cette fonction renvoie un tableau constitués des chaînes de caractères de taille la longueur spécifiée et associées à la plus grande valeur dans le dictionnaire.

Télécharger ce fichier dans le même dossier que votre code Python.

Indice

Question 2 : La méthode .split() pourrait vous aider.

Cf cette page pour plus de détails...

Indice

Question 3 : Si f est le nom d'une variable faisant référence à un fichier texte, alors f.read() renvoie le contenu de ce fichier texte sous la forme d'une unique chaîne de caractères.

On utilisera le code f = open('nom_du_fichier') pour obtenir cette variable.

Indice

Question 5 : C'est un algorithme de recherche du maximum légèrement modifié :

  • lorsqu'on rencontre un nouveau maximum, on ré-initialise le tableau ;

  • lorsqu'on rencontre un mot de même « valeur », on l'incorpore au tableau.