Probleme de liste python
wordstring = """abricot
.......
.......
.......
.......
zython
zythons
zythum
zythums"""
interwordlist = wordstring.splitlines()
wordlistfix = []
for line in interwordlist:
pureword = str(line.strip())
wordlistfix.append(pureword)
print(wordlistfix[0:10])
while True:
badword = str(input("mot à remettre en ordre : "))
wordlist = wordlistfix
wordindex = range(int(len(wordlistfix)))
for lettre in badword:
selectindex = []
for index in wordindex:
word = wordlist[index]
if lettre in word:
selectindex.append(index)
i = word.find(lettre)
newword = ""
for n in range(len(word)):
if n != i:
newword = newword + word[n]
else:
pass
wordlist[index] = newword
else:
continue
if len(selectindex) < 1:
print("aucun mot trouvé")
break
else:
wordindex = selectindex
continue
for indexfinal in wordindex:
if len(wordlistfix[indexfinal]) == len(badword):
print(" ", wordlistfix[indexfinal])
else:
continue
Malgré ce cassage de crâne, le programme renvoie des mots qui n'ont rien avoir comme:
pour "hcat" (qui devrait normallement renvoyer "chat") me renvoie à la place, des mots comme : "lici, licn, loc, obia, oucn, ..... " ce qui ressemble à des morceaux de mots incomplets...
Quelqu'un aurrait il assez de matiere grise pour m'aider à conprendre ce qui ne fonctionne pas dans mon code ? J ai relu plusieurs fois, j ai meme essayé d'appliquer mon code a la main sur papier avec une petite liste, mais je ne comprends vraiment pas ce qui ne joue pas.
Merci d'avance
31 réponses
Le problème porte sur la reconstruction d'un mot à partir de lettres mélangées en utilisant une liste de mots français d'environ 300000 entrées, avec l'exemple 'hcta' devant devenir 'chat'. Des réponses proposent d'abord de vérifier la compatibilité de longueur entre le mot mélangé et les candidats, puis de filtrer les mots contenant les lettres une par une. D'autres préconisent de trier les lettres de chaque mot par ordre alphabétique et de vérifier l'appartenance via des dictionnaires, tout en discutant des diacritiques et de l'Unicode pour les cas accentués. En cas d'accentuation, certaines propositions explorent une approche hybride qui normalise les lettres pour l'appariement tout en conservant les formes diacritiques afin de filtrer les résultats.
-
Pour résumé, le code que Phil t'as donné au message 28 (donc avant que tu nous embrouille avec les accents) fait exactement ce que tu demandes.

Donc vu que ça marche avec les accents et que tu parles d'un problème d'accent, on comprend l'inverse, et on te propose des solutions sans les accents. Et ça ne te va pas, donc forcément nous sommes un peu perdus.
Donc je te propose une solution qui te donne les 2 résultats en fonction d'un paramètre dans la recherche et donc te laisse le choix de chercher en tenant compte des accents ou pas, à ta guise.
Et ça ne te va toujours pas.
yg_be finit par penser que ton ordinateur a une configuration "anormale" qui expliquerait qu'on ne se comprenne pas sur cette histoire d'accents, mais vu ta dernière réponse, ça n'est pas le cas.
Donc y'a un moment, faut expliquer clairement ce que tu veux, éventuellement faire des captures d'écrans montrant un résultat incorrect en postant le code testé.
-
-
Contributeurceci marche aussi très bien:
def CreerDictionnaire(Mots): dico = {} for mot in Mots: cle = "".join(sorted(mot)) if not cle in dico.keys(): dico[cle]=[] dico[cle].append(mot) return dico def ChercheMot(lettres, dico): cle = "".join(sorted(lettres)) if cle in dico.keys(): print("les mots sont", dico[cle]) else: print("pas d'occurences") wordstring = """abricot chat chatte zythons zythum zythums pesai épais sépia oranges rongeas""" wordlistfix = wordstring.splitlines() print("La liste de mots", wordlistfix) dico = CreerDictionnaire(wordlistfix) print("Le dictionnaire") for d in dico.keys(): print(d,"==>",dico[d]) rep = "Q" while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break ChercheMot(mixed_word, dico) -
@yg_beOui, du coup, plus besoin de s’embêter à sortir les diacritiques.
-
-
Ça m'affiche les carratères correctement, é => é, è => è...
-
On ne m'a toujours pas répondu, ma question était est-ce qu'on peut utiliser les accents dans le input().
Dans la reponse de Whismeril il peut afficher les resultats soit avec accents, soit sans accents, mais dans le input(), epais est dans les 2 cas sans accents.
Ce que j'ai demandé, c'est comment pouvoir faire fonctionner le programme, tout simplement en considerant les é, è, â,... comme des lettres à part, c'est a dire comment faire pour qu'on puisse par exemple : écrire dans le input : " épsia " (avec l'accent), et que le programme nous renvoie uniquement les anagrames contenant " é ", c'est à dire : => sépia, épais (et c'est tout)
Merci d'avance -
En combinant la correction de yg_be et les anagrammes comme l'a proposé Phil à un moment
from unidecode import unidecode import itertools as it class Dictionnaire: def __init__(self, mot): self.lesMots = [] self.ajouteMot(mot) def ajouteMot(self, mot): self.lesMots.append(mot) def __str__(self): return "{" + " - ".join(self.lesMots) + "}" def CreerDictionnaire(Mots): dico = {} for mot in Mots: cle = "".join(sorted(unidecode(mot))) if cle in dico.keys(): dico[cle].ajouteMot(mot) else: dico[cle]=Dictionnaire(mot) return dico def ChercheMot(lettres, dico, ignorerDiacritiques = True): cle = "".join(sorted(unidecode(lettres))) if cle in dico.keys(): if ignorerDiacritiques: print("en ignorant les diacritiques, les mots sont", dico[cle]) else: anags = set("".join(e) for e in it.permutations(lettres, len(lettres))) res = [] for mot in dico[cle].lesMots: if(mot in anags): res.append(mot) print("en prenant en compte les diacritiques, les mots sont", res) else: print("pas d'occurences") wordstring = """abricot chat chatte zythons zythum zythums pesai épais sépia oranges rongeas""" wordlistfix = wordstring.splitlines() print("La liste de mots", wordlistfix) dico = CreerDictionnaire(wordlistfix) print("Le dictionnaire") for d in dico: print(d) rep = "Q" while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break ChercheMot(mixed_word, dico) ChercheMot(mixed_word, dico, False)
ce qui donneLa liste de mots ['abricot', 'chat', 'chatte', 'zythons', 'zythum', 'zythums', 'pesai', 'épais', 'sépia', 'oranges', 'rongeas'] Le dictionnaire abciort acht acehtt hnostyz hmtuyz hmstuyz aeips aegnors mot à remettre en ordre (Q)uitter : épais en ignorant les diacritiques, les mots sont {pesai - épais - sépia} en prenant en compte les diacritiques, les mots sont ['épais', 'sépia'] mot à remettre en ordre (Q)uitter : epais en ignorant les diacritiques, les mots sont {pesai - épais - sépia} en prenant en compte les diacritiques, les mots sont ['pesai'] mot à remettre en ordre (Q)uitter : tata pas d'occurences pas d'occurences mot à remettre en ordre (Q)uitter : oranges en ignorant les diacritiques, les mots sont {oranges - rongeas} en prenant en compte les diacritiques, les mots sont ['oranges', 'rongeas'] mot à remettre en ordre (Q)uitter :
-
En fait, y'a même plus besoin de la classe
from unidecode import unidecode import itertools as it def CreerDictionnaire(Mots): dico = {} for mot in Mots: cle = "".join(sorted(unidecode(mot))) if cle in dico.keys(): dico[cle].append(mot) else: dico[cle]=[mot] return dico def ChercheMot(lettres, dico, ignorerDiacritiques = True): cle = "".join(sorted(unidecode(lettres))) if cle in dico.keys(): if ignorerDiacritiques: print("en ignorant les diacritiques, les mots sont", dico[cle]) else: anags = set("".join(e) for e in it.permutations(lettres, len(lettres))) res = [] for mot in dico[cle]: if(mot in anags): res.append(mot) print("en prenant en compte les diacritiques, les mots sont", res) else: print("pas d'occurences") wordstring = """abricot chat chatte zythons zythum zythums pesai épais sépia oranges rongeas""" wordlistfix = wordstring.splitlines() print("La liste de mots", wordlistfix) dico = CreerDictionnaire(wordlistfix) print("Le dictionnaire") for d in dico: print("clé '", d, "' => ", dico[d]) while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break ChercheMot(mixed_word, dico) ChercheMot(mixed_word, dico, False) -
Contributeur@Utilisateur anonymecela existe parfois, avoir "besoin" d'une classe?
-
Contributeur@Utilisateur anonymeSi on ignore les diacritiques, ne suffit-il pas de supprimer les utilisations de unidecode?
-
Contributeur@Utilisateur anonymec'est une hérésie de faire des permutations pour vérifier si deux mots sont des anagrammes!
-
@yg_be
cela existe parfois, avoir "besoin" d'une classe?
En python, je ne sais pas, mais en C# ou Java, pas le choix tout est objet, donc même si tu n'en écris pas tu en utilises. Du coup, c'est une habitude que j'ai prise. Cela dit, si j'avais mieux chercher comment faire un dictionnaire, je m'en serais passé
Si on ignore les diacritiques, ne suffit-il pas de supprimer les utilisations de unidecode?
Partant d'un dictionnaire constitué sans les diacritiques, ça reste simple de refaire un tri sur les quelques mots obtenus pour ne garder que ceux qui ont les "bons" diacritiques. Y'a moultes façons de trier derrière, là je voulais juste réutiliser la proposition de Phil.
On pourrait aussi constituer un dico de dico.
La première clé est sans diacritique et chaque dico dans cette clé a sa clé avec les diacritiques. Ça serait peut être un peu plus long à constituer mais sans doute plus proprec'est une hérésie de faire des permutations pour vérifier si deux mots sont des anagrammes!
cf ci dessus...
-
-
unidecode* je voulais dire, je ne connais pas ce mod mais je vais essayer la methode de phil, le problème c'est que je voudrais quand même pouvoir ne pas ignorer les accents, et les utiliser dans mixed word afin que le code me remvoie uniquement le bon mots contenant les meme accents, vous voyez..
-
Je vais essayer avec unicode
-
Merci, la methode de classer par odre alphabétique les caracteres de chaque mot du dicos, puis verifier pour tout autre anagrame en replacant dans l'ordre alphabetique si le resultat figure dans la liste me semble en effet la plus rapide, je ne co aissais pas la methode avec join.
Sinon, pour les accents, vous avez mal compris mon probleme. Je saurais comment faire pour ignorer les accents. Seulement, le problème est un autre : lorsque je mets par exemple badword = "éphélatn", le programme devrait me retourner =>"éléphant" car j'ai bel et bien spécifié les accents. Sauf que non, il me retourne rien, j ai comme l'impression que input() ignore les accents.
On est bien d'accord que badword = "éét" devrait me renvoyer "été", mais non, ça ne fonctionne pas avec tout badword contenant des accents. Pourtant été, éléphant,... sont bien dans la liste.
Je comprends pas -
Bah, il suffit de changer la variable dans le print:
from unidecode import unidecode dico = ['abricot', 'chat', 'oranges', 'onagres', 'organes', 'rageons', 'épais', 'zython'] dico_no_accents = [unidecode(s) for s in dico] print(dico_no_accents) while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break mixed_word_no_accents = unidecode(mixed_word) mixed_word_a = ''.join(sorted(mixed_word_no_accents)) found = False for word in dico_no_accents: word_a = ''.join(sorted(word)) if(word_a == mixed_word_a): found = True p = dico_no_accents.index(word) print('Trouvé : ', dico[p]) if(not found): print(mixed_word,'non trouvé ...') -
Un truc comme ça (pas concis du tout ;) ! )
from unidecode import unidecode class Dictionnaire: def __init__(self, cle, mot): self.laCle = cle self.lesMots = [] self.ajouteMot(mot) def ajouteMot(self, mot): self.lesMots.append(mot) def __str__(self): return self.laCle + " => {" + " - ".join(self.lesMots) + "}" def CreerDictionnaire(Mots): dico = [] for mot in Mots: cle = "".join(sorted(unidecode(mot))) if cle in (d.laCle for d in dico): monIndex = [d.laCle for d in dico].index(cle) dico[monIndex].ajouteMot(mot) else: dico.append(Dictionnaire(cle,mot)) return dico def ChercheMot(lettres, dico): cle = "".join(sorted(unidecode(lettres))) if cle in (d.laCle for d in dico): monIndex = [d.laCle for d in dico].index(cle) print("les mots sont", dico[monIndex].lesMots) else: print("pas d'occurences") wordstring = """abricot chat chatte zythons zythum zythums pesai épais sépia oranges rongeas""" wordlistfix = wordstring.splitlines() print("La liste de mots", wordlistfix) dico = CreerDictionnaire(wordlistfix) print("Le dictionnaire") for d in dico: print(d) rep = "Q" while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break ChercheMot(mixed_word, dico)
ce qui donneLa liste de mots ['abricot', 'chat', 'chatte', 'zythons', 'zythum', 'zythums', 'pesai', 'épais', 'sépia', 'oranges', 'rongeas'] Le dictionnaire abciort => {abricot} acht => {chat} acehtt => {chatte} hnostyz => {zythons} hmtuyz => {zythum} hmstuyz => {zythums} aeips => {pesai - épais - sépia} aegnors => {oranges - rongeas} mot à remettre en ordre (Q)uitter : pasei les mots sont ['pesai', 'épais', 'sépia'] mot à remettre en ordre (Q)uitter : tata pas d'occurences mot à remettre en ordre (Q)uitter : oranges les mots sont ['oranges', 'rongeas'] mot à remettre en ordre (Q)uitter :
-
-
Contributeur@yg_beVariante avec dictionnaire:
from unidecode import unidecode class Dictionnaire: def __init__(self, mot): self.lesMots = [] self.ajouteMot(mot) def ajouteMot(self, mot): self.lesMots.append(mot) def __str__(self): return "{" + " - ".join(self.lesMots) + "}" def CreerDictionnaire(Mots): dico = {} for mot in Mots: cle = "".join(sorted(unidecode(mot))) if cle in dico.keys(): dico[cle].ajouteMot(mot) else: dico[cle]=Dictionnaire(mot) return dico def ChercheMot(lettres, dico): cle = "".join(sorted(unidecode(lettres))) if cle in dico.keys(): print("les mots sont", dico[cle].lesMots) else: print("pas d'occurences") wordstring = """abricot chat chatte zythons zythum zythums pesai épais sépia oranges rongeas""" wordlistfix = wordstring.splitlines() print("La liste de mots", wordlistfix) dico = CreerDictionnaire(wordlistfix) print("Le dictionnaire") for d in dico.keys(): print(d,"==>",dico[d]) rep = "Q" while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break ChercheMot(mixed_word, dico) -
@yg_beEn effet, c'est mon manque de maitrise en Python qui me fait patachonner.
Merci
-
-
Comme ça, alors (j'ai ajouté 1 mot avec accent) :
Il faut installer unidecode d'abord
from unidecode import unidecode dico = ['abricot', 'chat', 'oranges', 'onagres', 'organes', 'rageons', 'épais', 'zython'] dico_no_accents = [unidecode(s) for s in dico] print(dico_no_accents) while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break mixed_word_no_accents = unidecode(mixed_word) mixed_word_a = ''.join(sorted(mixed_word_no_accents)) found = False for word in dico_no_accents: word_a = ''.join(sorted(word)) if(word_a == mixed_word_a): found = True print('Trouvé : ', word) if(not found): print(mixed_word,'non trouvé ...')-
Salut, sauf que là ça va te dire, j’ai trouvé epais alors que le vrai mot c’est épais.
Dans le code posté à 1h18 à la ligne 25, il faut dire que piece vaut word sans accent et ça marche.
Ou alors, dans ton concept, il faut créer un tuple pour chaque entrée du dictionnaire. Un peu comme l’a proposé yg_be.
D’ailleurs sont idée de créer un dictionnary avec comme clé les lettres sans diacritiques dans l’ordre alphabétique pour chaque mot sera je pense le plus rapide en cas de recherche multiple.
-
-
Bonjour
Tout marche trés bien, mais il subsiste tout de même 1 seul, le seul et ultime problème : dés qu'il s'agit de mot comportant des accents, comme "è", "é", "à", "î", ô, â, ï,.... alors le code ne retourne rien, mème pour les mots très simple.
C'est parce que quand tu cherche "e", ça n'est ni "é" ni "è" ni "ê", pour l'ordinateur se sont 4 caractères différents, plus précisément, ce sont 4 "e" dont 3 avec un signe diacritique, il y a aussi le ç ou la ñ comme cas connu.
Pour retourner les possibilités quelque soit les signes diacritique, il "suffit" de faire les recherches sur le caractère de base.
https://stackoverflow.com/questions/48445459/removing-diacritical-marks-using-python
-
Bonjour patpouf,
Encore plus court et plus concis:
dico = ['abricot', 'chat', 'oranges', 'onagres', 'organes', 'rageons', 'zython'] print(dico) while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break mixed_word_a = ''.join(sorted(mixed_word)) found = False for word in dico: word_a = ''.join(sorted(word)) if(word_a == mixed_word_a): found = True print('Trouvé : ', word) if(not found): print(mixed_word,'non trouvé ...')
-
J'ai enfin réussi à faire un code qui fonctionne parfaitement pour les mots de toutes longueurs:
zython zythons zythum zythums""" def dellettre(string, lettre): newword = "" ind = string.find(lettre) for index in range(len(string)): if index != ind: newword = newword + string[index] return(newword) interwordlist = wordstring.splitlines() wordlistfix = [] for line in interwordlist: pureword = str(line.strip()) wordlistfix.append(pureword) while(True): badword = input("mot à remettre en ordre : ") selectword = [] for word in wordlistfix: if(len(word) == len(badword)): piece = word longueur = 0 for lettre in badword: if lettre in piece: longueur = longueur + 1 piece = dellettre(piece, lettre) else: break if longueur == len(badword): selectword.append(word) else: pass for mot in selectword: print(mot)
Voici un exemple de son fonctionnement :
mot à remettre en ordre : ogrnaes
onagres
oranges
organes
rageons
rongeas
songera
Donc il fonctionne bien, il me donne bien toutes les olutions possibles, il fonctionne aussi avec les longs mots comme "hermaphrodite", "hippopotame", "thermodynamique".
Tout marche trés bien, mais il subsiste tout de même 1 seul, le seul et ultime problème : dés qu'il s'agit de mot comportant des accents, comme "è", "é", "à", "î", ô, â, ï,.... alors le code ne retourne rien, mème pour les mots très simple. Donc là, je me pose la question de savoir si c est encore un erreur dans le code, ce qui me parrait bizarre car ça fonctionne parfaitement pour tous les mots, même long, qui m'ont pas de lettre avec des accent. Ou alors, est-ce peut etre un problème d'encodage ou un problème lié à l'interprêtation des accents par python.
Pourtant, lorsque je fais :
string = éléphant
print(string.find("é"))
celà me renvoie pourtant bien =>0, donc .find detecte bien les accents. L'erreur est donc ailleur, mais je ne sais pas où...
Svp auriez vous une idée ? -
ContributeurMoi je ferais ainsi:
1) associer à chaque mot du dictionnaire une clé, chaine de caractères avec les lettres du mot, triées par ordre alphabétique
2) stocker cela dans une base de données sqlite, ou dans une structure dans un fichier, triée par la clé
Quand tu dois retrouver un mot à partir de lettres dans le mauvais ordre, tu fais une recherche, puisque tu connais la clé exacte à chercher.-
Contributeurexemple:
import sqlite3 wordstring = """abricot chat chatte zythons zythum zythums""" def trielettres (m): return "".join(sorted(m)) conn = sqlite3.connect('dico.db') curs=conn.cursor() # sql="CREATE TABLE dico(mot text, cle text)" # curs.execute(sql) # sql="CREATE INDEX i_cle ON dico(cle)" # curs.execute(sql) wordlistfix = wordstring.splitlines() sql="DELETE FROM dico" curs.execute(sql) for word in wordlistfix: sql="INSERT INTO dico (mot,cle) VALUES('" + word + "','"+ trielettres(word) +"')" curs.execute(sql) conn.commit() while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break sql="SELECT mot FROM dico WHERE cle='" + trielettres(mixed_word) + "'" curs.execute(sql) recs=curs.fetchall() for rec in recs: print(rec[0])
-
-
Ah oui, j'allais oublier, la seule chose qui ne fo ctionne pas dans le code que vous m'avez envoyé, c'est la mise à 0 de la variable longueur. Par chance, votre code fonctionne pour la liste que vous avez utilisée car "chat" et le seul mot pour lequel la variable longueur a été utilisée, vu que "chat" est le seul mot de votre liste qui contient le meme nombre de caractères que "hcat". Mais si vous aviez mis un autre mot de d'autres mots valables pour "hcat", imaginons que dans votre liste vous auriez mis le mot "cath", votre code ne l'aurait pas trouvé, car votre variable longueur n'aurait pas été remise à 0, car vous n'avez pas mis (longueur = 0) au bon endroit. J'ai juste corrigé ça en insérant (longueur = 0) à l'interieur de la premiere boucle for, mais à l'extérieur de la 2ème. Et la votre algorithme devient juste. Sinon merci, votre méthode en utilisant la variable longeur est astucieuse, j'y avais pas pensé.
-
Hé oui, mon code est très simple et très court, et il fait le job demandé
Tu remarqueras que, lorsque je boucle sur les mots de wordlistfix, je commence par tester si le mot mélangé
a la même longueur que le mot de wordlistfix, sinon, ce n'est pas la peine d'analyser plus loin
C'est bien la 1ere chose à faire ... -
Rebonjour, oui, klmerci beaucoup, c est en effet la méthode que je voulais avec laquelle je voulais refaire mon code, en testant pour chaque mot le nb de lettre, et il marche effectivement bien, il n'y a pas de problemes avec les doublons. Je suis en train de le perfectionner en ajoutant des options comme ignorer les accents, ou choisir le nombre de lettres minimum à utiliser. Je me pose maintenant si il existe de meme, un algorithme simple permettant de faire la meme chose avec des phrases, (les lettres de toute la phrase sont melangées), mais sans pour autant avoi recour au bruteforce, ni faire de liste de phrases, mais uniquement en utilisant la liste de mots francais. Ce problème là me parrait déjà plus compliqué ètant donné qu'avec une phrase comprenant beaucoup de caracteres et/ou beaucoup de mots, on peut avoir des milliers de possibilites de phrases. Mais deja il faudrait trouver un algo permettant de toutes les trouver sans faire de bruteforce (ou alors une bruteforce dont le temps de calcul ne serait pas exponentiel en fonction de la longueur de la phrase ou du nombre de mots dans la phrase).
Sinon, merci beaucoup pour vos conseils, je me complique parfois trop la vie en utilisant python. -
Bonjour Pafpouf,
Alors où en es tu ?
As-tu testé mon code ? -
Ben non, wordlistfix est initialisée une seule fois avant le while
En faisant comme ça, ca marche:
wordstring = """abricot chat chatte zythons zythum zythums""" wordlistfix = wordstring.splitlines() print(wordlistfix) while(True): mixed_word = input("\nmot à remettre en ordre (Q)uitter : ") if(mixed_word in ['q','Q']): break longueur = 0 for word in wordlistfix: if(len(word) == len(mixed_word)): for lettre in mixed_word: if(lettre in word): longueur += 1 if(len(word) == longueur): print('\nTrouvé : {}'.format(word)) break else: longueur = 0 if(longueur == 0): print('\nRien trouvé !')
-
Oui, majs normallement on est forcement dans un cas ou dans l'autre, car soit la liste est vide (len(...)<1:), soit la liste n'est pas vide (else:) et dans ce cas la boucle for continue pour la lettre suivante. Je pense que je vais repenser mon code, et au lieu de faire (pour chaque lettre de badword, lettre est il dans {wordlist[indexlist]} ) je vais plutot faire l'inverse, c est a dire: vérifier si pour chaque mot de la liste, le mot contient il chaque lettre de badword), en gros je vais essayer de refaire un code mais en inversant les 2 premiere boucles for. Je pense que avec cette methode ce serait plus simple car il n'y aura pas besoin de mettre à jour wordindex pour chaque lettre. Je réessaie ce soir, et si je réussis, je partage le code, si ça vous interresse..
Merci des conseils, j'avais effectivement pu penser à une break pour sortir de la loupe, mais l'avantage de rester dans la boucle while, c'est que on peut utiliser le code plusieurs fois, sans avoir à regénérer wordlistfix à chaque fois, car la liste est quand meme assez longue (300000 mots).
Je vous redis si j'atteints quelque chose ce soir
- 1
- 2