Recherche de mots

Suite à ma vidéo d’initiation à JavaScript concernant la recherche de mots (palindromes, anacycliques, mots croissants…), je vous propose ici les traductions en Python

Importer les dictionnaires

Enregistrez le fichier dicos.py dans un dossier et créez un fichier recherche.py dans ce même dossier avec pour contenu :

import dicos

print(len(dicos.dico5))

En exécutant le fichier vous devriez voir le nombre 7276 qui correspond au nombre de mots de 5 lettres.

Mots en sens inverse et palindromes

import dicos

def inverse(mot):
    return mot[::-1]

def palindrome(dico):
    return [mot for mot in dico if mot == inverse(mot)]

Testons :

>>> inverse('BONJOUR')
'RUOJNOB'

>>> palindrome(dicos.dico6)
['SASSAS', 'SELLES', 'SENNES', 'SERRES', ... ]

Anacycliques

def anacyclique(dico):
    return [mot for mot in dico if inverse(mot) in dico]

Testons :

>>> anacyclique(dicos.dico7)
['ALLIACE', 'ALLIAGE', 'ANNOTAT', 'ARETIER',...]

Mots croissants

def croissant(dico):
    return [mot for mot in dico if mot == ''.join(sorted(list(mot)))]

Testons :

>>> croissant(dicos.dico6)
['ACCENT', 'ACCORT', 'AFFINS', 'AFFLUX', 'AGGLOS', 'BELLOT', 'BIJOUX', 'BILLOT', 'CHINTZ', 'DEHORS', 'EFFORT']

Q sans U

def QsansU(dico):
    return [mot for mot in dico if 'Q' in mot and 'U' not in mot]

Testons :

>>> QsansU(dicos.dico5)
['QIBLA']

Toutes les voyelles

def nbVoyelles(mot):
    return len([v for v in 'AEIOU' if v in mot])

def ToutesLesVoyelles(dico):
    return [mot for mot in dico if nbVoyelles(mot) == 5]

Testons :

>>> nbVoyelles('BONJOUR')
2

>>> ToutesLesVoyelles(dicos.dico6)
['EBOUAI', 'ENOUAI', 'OISEAU']