Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide ( chaîne de caractère )

    13 janvier 2015 à 22:12:59

    Bonjour,

    J'ai une chaîne de caractère et un mot,  je veux vérifier si toutes les lettres de ce mot existe dans cette chaîne, donc c'est un mot qui contient que les lettres de la chaînes et une lettres ne pouvez pas être répéter une autre fois

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      13 janvier 2015 à 22:27:01

      Salut

      J'ai rien compris, mais si je ne m'abuse tu as déjà fait une demande similaire et on t'a répondu.

      • Partager sur Facebook
      • Partager sur Twitter
        13 janvier 2015 à 22:44:06

        non maintenant je veux vérifier si les lettres de la chaîne sont les mêmes de le mots, par ex:

        suppose que:

        chaine = "rfnacsia"

        mot = "francais" (ça marche)

        mot = "franc" (ça marche)

        mot="efrancais"( ça marche pas car le "e" n'est pas dans la chaine)

        mot = "ffranc" (ça marche pas car le "f" a été répéter une autre fois )

        • Partager sur Facebook
        • Partager sur Twitter
          14 janvier 2015 à 12:23:16

          Il y a plusieurs manières de procéder (comme toujours...). Tu ne peux pas utiliser de set puisque tu veux avoir des répétitions de caractères (francais contient 2 a). Alors ce qui s'approche du multiset en Python est collections.Counter. Tu lui passes ta chaîne de caractères et il va créer un dictionnaire avec en clés les lettres uniques, et en valeurs le compte de chacune de ces lettres.

          Il suffit ensuite de comparer les comptes des lettres de ton mot aux comptes des lettres de ta chaine.

          from collections import Counter
          
          def word_subset_of_word(word_super_set, word_subset):
              """Check if word_subset is a subset of word_super_set"""
              word_super_set_counter = Counter(word_super_set)
              word_subset_counter = Counter(word_subset)
              return all(word_super_set_counter[key] >= word_subset_counter[key]
                         for key in word_subset_counter)
          
          chaine = "rfnacsia"
          
          # Just to show what the Counter is like
          chaine_counter = Counter(chaine)
          # Counter({'a': 2, 'c': 1, 'f': 1, 'i': 1, 'n': 1, 's': 1, 'r': 1})
          
          # Some tests
          assert(word_subset_of_word(chaine, "francais"))
          assert(word_subset_of_word(chaine, "franc"))
          assert(not word_subset_of_word(chaine, "efrancais"))
          assert(not word_subset_of_word(chaine, "ffranc"))
          
          • Partager sur Facebook
          • Partager sur Twitter

          Besoin d'aide ( chaîne de caractère )

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown