Jeu de mot

Résolu
cara -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
j'aimerai savoir comment poser différentes questions sur une même série de mot.
pour une liste de mot crée aléatoirement, j'ai choisi pour question n 1 "quel mot contient la lettre x"

from random import randint
from random import *

def importer_dictionnaire(fichier_dictionnaire):
    liste_dictionnaire = []
    f = open(fichier_dictionnaire, 'r')
    for line in f.readlines():
        liste_dictionnaire.append(line.lower().strip())
    f.close()
    return liste_dictionnaire
liste_dictionnaire = importer_dictionnaire("dico-complet.txt")
l1=[]
l2=[]
for mot in liste_dictionnaire:
    if "x" in mot:
        l1.append(mot)
    else:
        l2.append(mot)

Q1= print("Quel mot contient la lettre x?")
l3=[]
jeu=sample(l1,1)
jeu2=sample(l2,9)
l3.append(jeu)
l3.append(jeu2)
print(l3)


mais sur cette même liste de mot qui va apparaître je souhaite demander parmi ces mot le quelle contient la lettre S, en prenant en compte la réponse précédente.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.




2 réponses

  1. critou
     
    Bonjour.

    La question à se poser, est :
    Qu'est-ce qui va garantir que dans ta liste de mots, il y en a au moins un qui comporte la lettre s ?

    Donc si tu dois faire pareil que pour la lettre x, (un seul mot comportant cette lettre), c'est également à la construction de ta liste de mots que tu dois faire cela.

    Et il faudra faire attention au cas précédent, ie : le mot contenant la lettre x contient-il aussi la lettre s ?
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Si les questions sont connues à l'avance (i.e. au moment d'écrire le programme), il suffit d'écrire une fonction de filtrage qui va extraire la sous-liste de mots adéquate.

    #!/usr/bin/env python3
    
    def filtre(mots :list, c :chr) -> list:
        return [mot for mot in mots if c in mot]
    
    mots = ["Savez", "vous", "planter", "les", "choux", "Saindoux"]
    
    mots_x = filtre(mots, 'x')
    print("mots_x = %r" % mots_x)
    
    mots_S = filtre(mots, 'S')
    print("mots_S = %r" % mots_S)
    
    mots_xS = filtre(filtre(mots, 'x'), 'S')
    print("mots_xS = %r" % mots_xS)
    
    # Ou aussi:
    # mots_xS = filtre(mots_x, 'S')
    # mots_xS = filtre(mots_S, 'x')


    Ce qui donne :

    mots_x = ['choux', 'Saindoux']
    mots_S = ['Savez', 'Saindoux']
    mots_xS = ['Saindoux']


    Bonne chance
    0
    1. caraqueta
       
      Bonjour,
      Merci d'avoir répondu ca nous à été très utile!
      bonne continuation
      0
    2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
       
      Parfait, bonne continuation également
      0