Jeu de mot

Résolu
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. 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
    1. Modérateur
      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. Bonjour,
        Merci d'avoir répondu ca nous à été très utile!
        bonne continuation
        0
      2. Modérateur
        Parfait, bonne continuation également
        0