Bonjour à tous,
Actuellement débutant dans le monde du codage informatique, je suis en train de suivre un mooc python afin d'avoir les premières bases.
actuellement je coince sur un exercice. Voir consigne ci-dessous.
**********
Joao vient d’arriver dans notre pays depuis le Portugal. Il a encore du mal avec la langue française. Malgré ses efforts considérables, il fait une faute d’orthographe quasi à chaque mot. Son souci est qu’il n’arrive pas toujours à écrire un mot correctement sans se tromper à une lettre près. Ainsi pour écrire « bonjour », il peut écrire « binjour ». Pour remédier à ce problème, Joao utilise un correcteur orthographique. Malheureusement, Joao a un examen aujourd’hui et il a oublié son petit correcteur.
Afin de l’aider, nous vous demandons d’écrire une fonction correcteur(mot, liste_mots) où mot est le mot que Joao écrit et liste_mots est une liste qui contient les mots (ayant la bonne orthographe) que Joao est susceptible d’utiliser.
Cette fonction doit retourner le mot dont l’orthographe a été corrigée.
Exemple 1
L’appel suivant de la fonction :
correcteur("bonvour", ["chien", "chat", "train", "voiture", "bonjour", "merci"])
doit retourner :
"bonjour"
***********
voici le code que j'ai écris et que je vais essayé d'expliquer.
Dans mon code j'ai une première fonction qui me permet de comparer chaque caractère de deux chaîne de caractère en entrée et retourne un résultat D, si le résultat de D est égale à 0 donc tout les caractères sont identiques donc il n'y a pas de faite d'orthographe, en revanche si D = 1 il y a une faute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 def distance_mots(mot_1, mot_2): d = 0 #incrémentation des distances for i in range(len(mot_1)): # boucle pour interroger chaque caractère if mot_1[i] != mot_2[i]: # si les caractères sont différent d = d + 1 # incrémentation de +1 a d return d # a la fin de la boucle retourner le résultat de d def correcteur(mot, liste_mots): # fonction correcteur num = 0 # variable num iteration = 0 # variable itération while iteration != len(liste_mots): # création d'une boucle en fonction du nombre d'élément dans la liste de mots iteration += 1 # incrémenter + 1 a la variable iteration if len(mot) == len(liste_mots[num]): # rechercher les mots avec le même nombres de caractère distance_mots(mot, liste_mots[num]) # une fois trouver faire appel a la fonction distance_mots res = distance_mots(mot, liste_mots) # variable du résultat de la fonction distance_mots if res == 1: #si le résultat de distance_mot est égale à 1 return liste_mots[num] # retourner le mot correspondant la liste de mots iteration = len(liste_mots) # arrêt de la boucle en changeant la valeur d'itération elif res == 0: # si le résultat de distance_mot est égale à 0 return mot # retourner le mot si l'ortographe est correcte iteration = len(liste_mots) # arrêt de la boucle en changeant la valeur d'itération else: num += 1 # incrémenter + 1 a num
Ensuite j'ai une deuxième fonction nommée correcteur qui reçoit en entrée un mot et une liste de mots.
j'ai choisi l'option d'utilisé une boucle while car je part du principe qu'on ne sait pas de combien d'élément sera composer la liste de mots.
je créer 2 variables:
une nommée "num", l'autre "iteration"
iteration va me servir a stopper la boucle while et num a interroger chaque chaîne de caractère présente dans la liste de mot.
"je rappel que dans la consigne il est dit qu'il ne peut y avoir qu'une seul faute donc une lettre de différente sa permet de simplifier la chose"
Dans ma boucle while je recherche si la première entrée qui est une chaine de caractère a le même nombre de caractère que le num dans la liste de mots.
Malheureusement lors de mes tests a aucun moment le programme rentre dans la fonction if afin d'interroger la première question qui va me permettre de savoir si les deux chaînes de caractères qui sont en comparaison sont soit identique et donc pas de faute d'orthographe, soit 1 caractère différent et donc sans ce cas il s'agit du bon mot mais avec une faute ou bien si il y a plus d'un caractère de différent ce sont deux mots totalement différent.
Pouvez-vous me dire ce qui coince dans mon code?
Merci d'avance pour votre aide
Partager