Langage informatique 3

Ce cours est la suite directe de celui de première année. Le but est de poursuivre l'étude du langage Python (3.x) afin de réaliser, dans un premier temps, un programme de résolution de jeu du pendu. La seconde partie s'intéresse à la réalisation d'un programme de correction orthographique. Le tout s'appuie sur un lexique du français à télécharger .

Exercice 1

  1. Créez un script dans lequel vous recopierez la fonction CreerDico(lexiqueBrut) depuis le lien suivant creerDico.py. Modifiez la pour qu'elle retourne simplement la liste des mots du dictionnaire (sans doublon).
  2. Écrivez une fonction SimplifierMot(mot) qui remplace chaque caractère accentué de la chaînes de caractères mot par son équivalent non accentué.
  3. Écrivez une fonction MotHasard(dico) qui retourne un mot du dictionnaire dico au hasard, sous forme simplifiée.
  4. Écrivez une fonction PositionsLettre(mot, lettre) qui retourne l'ensemble des positions où le caractére lettre apparaît dans la chaîne de caractéres mot et qui retourne None si le caractère n'est pas présent.
  5. Écrivez une fonction RemplaceLettre(mot, lettre, lpos) qui renvoie une copie de la chaîne mot dont les caractères dont la position apparaît dans la liste lpos sont remplacés par le caractère lettre.
  6. Écrivez une fonction JeuDuPendu(dico) permettant de jouer au jeu du pendu. Le jeu choisira aléatoirement un mot dans le dictionnaire dico et affichera le caractère * pour représenter les caractères inconnus.

Exercice 2

  1. Écrivez une fonction CarVersListe() demandant à l'utilisateur de saisir une suite d'entiers séparéss par des espaces et qui renvoie cette suite sous forme de liste d'entiers.
  2. Écrivez une fonction JeuDuPendu2() permettant à la machine de jouer au jeu du pendu. Le jeu demandera à l'utilisateur de choisir un mot ainsi que le nombre de lettre qu'il contient. A partir de là, la machine proposera différentes lettres jusqu'à trouver le mot secret. Si la lettre appartient au mot secret, le jeu demande à l'utilisateur de saisir au clavier les positions où apparaît la lettre.

Exercice 3

  1. La distance entre deux mots est le nombre de lettres en lesquelles ils différent. Par exemple la distance entre crypte et égyptien vaut 5. Écrivez une fonction DistanceMot(mot1, mot2) qui retourne la distance entre deux mots.
  2. Écrivez une fonction DistanceMotListe(mot, listeMots, dist) qui retourne la liste des mots de la liste listeMots dont la distance à la chaîne de caractères mot est inférieure ou égale à dist.
  3. Écrivez une fonction SuppMotListe(lettre, listeMots) qui supprime de la liste listeMots tous les mots contenant le caractère lettre.
  4. Écrivez une fonction StatLettre(listeMots) qui renvoie le nombre d'occurences des lettres apparaissant dans les mots de la liste listeMots, stockés dans une structure de dictionnaire.
  5. À l'aide des fonctions précédentes, améliorez la fonction JeuDuPendu2(dico) en utilisant le liste dico des mots de la langue française.

Exercice 4

  1. On va chercher à améliorer la fonction de recherche de lettre en faisant une étude statistique un peu plus fine de la liste des mots possibles. Commencez par écrire une fonction MotContient(mot)) qui retourne la liste des lettres (sans doublon) contenues dans la chaîne de caractères mot.
  2. Écrivez une fonction StatLettre2(listeMots) qui retourne, dans une structure de dictionnaire, le nombre de mots de la liste listeMots dans lesquels chaque lettre apparait.
  3. Écrivez une fonction DevinerLettre(listeMots, dejaTestes) qui retourne la lettre la plus pertinente parmi celles n'apparaissant pas dans la liste dejaTestes, i.e. qui divise la liste listeMots de mots possibles le plus parfaitement en deux.
  4. Améliorez la fonction JeuDuPendu2(dico).

Exercice 5

Pour la correction orthographique, on utilise une notion de distance un peu différente de la notion précédente appelée distance d'édition. Pour rendre compte des divers types de fautes possibles, on considère comme distance le nombre de modifications (remplacer une lettre par une lettre, supprimer une lettre, ajouter une lettre, échanger deux lettres) nécessaires pour passer d'un mot à un autre. Par exemple, la distance entre fote et faute est de 2, celle entre fuate et faute est de 1.

Le but est de compléter le fichier correcteur.py pour réaliser un correcteur orthographique rudimentaire.

  1. Écrivez des fonctions Remplace1(mot), Supprime1(mot), Ajoute1(mot) et Echange1(mot) qui retournent l'ensemble des mots obtenus à partir du mot mot en effectuant une seule modification.
  2. Écrivez une fonction Edit1(mot, dico) qui retourne la liste de tous les mots du dictionnaire dico à distance d'édition 1 du mot mot.
  3. Écrivez une fonction Edit2(mot, dico) qui retourne la liste de tous les mots du dictionnaire dico à distance d'édition 2 du mot mot.
  4. Écrivez une fonction ChoixListe(l) qui affiche les éléments de la liste l en les numérotant, demande à l'utilisateur de rentrer au clavier le numéro d'un élément et le retourne.
  5. Écrivez une fonction CorrigerMot(mot, dico) qui énumère la liste de tous les mots du dictionnaire dico à distance d'édition 1 ou 2 du mot mot, propose à l'utilisateur de choisir l'orthographe correcte et renvoie le mot choisi.
  6. Écrivez une fonction CorrigerTexte(texte, dico) qui crée une copie du texte texte en en parcourant l'ensemble des mots et en corrigeant les mots mal orthographiés en demandant à l'utilisateur de choisir la bonne orthographe.