Mission 6

Mission 6

Dans cette mission nous allons développer un simple assistant qui fonctionne sur la console Python. L'utilisateur doit être capable de donner des commandes simples, pour lesquelles l'outil doit répondre avec une réponse pertinente. L'objective dans cette mission est de montrer que l'outil continue à fonctionner même si l'utilisateur donne des commandes incomplètes ou incorrectes.

Les commandes qui doivent être supportées sont:

  • file <name>: spécifie le nom d'un fichier sur lequel l'outil doit travailler
  • info: montre le nombre de lignes et de caractères du fichier
  • dictionary: utilise le fichier comme dictionnaire à partir de maintenant
  • search <word>: cherche le mot le plus similaire au mot spécifié dans le dictionnaire
  • sum <number1> ... <numbern>: calcule la somme des nombres spécifiés
  • avg <number1> ... <numbern>: calcule la moyenne des nombres spécifiés
  • help: montre des instructions à l'utilisateur
  • exit: arrête l'outil

En outre, il vous est demandé d'ajouter une commande de votre choix à l'outil.

Par exemple, l'outil doit supporter cette séquence de commandes :

Bienvenue dans votre outil personnalisé!
> file all-words.dat
Loaded all-words.dat
> info
11304 lines
1330218 caracters
> dictionary
Read file as dictionary
> search presbytaerial
Closest word is presbyterial
> search prebyteriaal
Closest word is presbyterial
> exit

Si l'utilisateur spécifie un fichier autre qu'un dictionnaire, ou si l'utilisateur cherche un mot sans avoir spécifié un dictionnaire, l'outil doit produire un message d'erreur et continuer à fonctionner.

Le format des dictionnaires est spécifié dans les exercices préparatoires. Pour éviter tout problème avec l'encodage des caractères accentués, votre dictionnaire vérifiera des mots en anglais (sans accents). Si l'utilisateur spécifie un mot qui n'est pas présent dans le dictionnaire, l'outil doit retourner le mot le plus similaire.

La phase de réalisation de cette mission est moins guidée que les précédentes. Par conséquent :

  • Vous pouvez choisir comment définir la similarité entre mots : par exemple, vous pouvez utiliser la fréquence des mots, puisqu'elle est spécifiée dans le fichier dictionnaire.
  • Vous pouvez créer une commande supplémentaire: cela peut être une autre commande mathématique, mais aussi une autre commande liée au dictionnaire.
  • Vous devez choisir vous-même la subdivision de votre programme en fonctions.

Néanmoins, on vous suggère de procéder comme suit:

  • Commencez avec une boucle while qui demande à l'utilisateur de donner des commandes.
  • Utilisez le code de la phase de préparation pour lire des commandes et réagir sur les commandes.
  • Écrivez au moins une fonction séparée pour chaque commande.
  • Utilisez des variables globales pour stocker l'état de l'outil (par exemple le nom du fichier).
  • Au début vous pouvez ignorer les erreurs: assurez-vous que l'outil fonctionne si l'utilisateur donne des commandes correctes.
  • Ensuite, améliorez le code afin que le programme continue quand une commande incorrecte est donnée.

Pour vous aider, vous avez à disposition le fichier all-words.dat qui contient une centaine de milliers de mots de la langue anglaise ainsi que le nombre d'occurrences de ce mot. Ce dictionnaire a été construit en se basant sur deux sources d'information : le dictionnaire utilisé par ispell (http://wordlist.sourceforge.net/) et la Global Service List (http://jbauman.com/gsl.html), c'est-à-dire les 2000 mots les plus fréquemment utilisés par un personne qui apprend l'anglais. Ce fichier contient les mots en minuscules et n'est pas trié dans l'ordre alphabétique. La première ligne contient le nombre de mots présents dans le fichier.

La mission de cette semaine n'aura pas de correction automatique donc soyez bien attentifs pendant la séance de feedback.

Tests

Vous devrez aussi écrire des tests de vos fonctions. Si assistant.py est le fichier qui contient votre code, nous attendons que vous écrivez un deuxième fichier test.py dans lequel vous faites des appels aux fonctions que vous avez fournies. Il est décrit dans le syllabus théorique comment faire des tests quand on a plusieurs fichiers (Section Tests).

Remise de votre solution

Vous devez soumettre un fichier assistant.py avec le code de votre outil et un fichier test.py avec vos tests. N'oubliez pas d'ajouter dans ce fichier des spécifications (docstrings) et aussi d'écrire un fichier README.

Please log in to see this exercise

Page précédente Page suivante
<string>