Info python

Fermé
Jean - 27 déc. 2018 à 10:04
 Jean - 2 janv. 2019 à 10:24
Bonjour,
Savez vous comment faire une fonction qui renvoie tous les mots contenant n lettres "A" et p lettres "B"?
Merci


Configuration: Android / Chrome 71.0.3578.99
A voir également:

5 réponses

Bonjour.

Pour compter le nombre d'occurences d'un caractère dans une chaîne, il y a str.count.

Alors pour faire une fonction renvoyant une liste de mots parmi une autre liste contenant x occurences de telles lettres, il conviendrait de déclarer une fonction recevant en paramètres la liste des mots, et un dictionnaire ayant pour clefs les lettres et valeurs le nombre d'occurences à trouver pour validation.

>>> mots = ('jean', 'jean-paul', 'jean-jacques')
>>> lettres = {'a':2, 'j':1}
>>> 
>>> def test(mots, lettres):
...     liste = []
...     for mot in mots:
...         for k, v in lettres.items():
...             if mot.count(k) != v:
...                 break
...         else:
...             liste.append(mot)
...     return liste
... 
>>> test(mots, lettres)
['jean-paul']


Simple, n'est-ce pas ?
0
Bonjour j'ai mal du poser la question, en fait il faut faire une fonction mots(n,p) et en fonction des valeurs données, on aura une liste où il y aura par exemple [BA,AB] si on prend n=1 et p=1 ou [ABB,BAB,BBA] pour n=1 et p=2, avec tous les cas possibles. On aura donc uniquement des mots composées de A et de B
0
Oui, d'où le besoin de bien décrire ce que l'on veut obtenir, cela se nomme des combinaisons. Python fournit pour ce faire le module itertools permettant de créer des combinaisons d'itérables.

import itertools

def combiner(*args):
    el = [chr(65 + i) * n for i, n in enumerate(args)]
    combinaisons = itertools.permutations(''.join(el), sum(args))
    return sorted(set(''.join(s) for s in combinaisons))
    
combinaisons = combiner(1, 2)
print(combinaisons)
# ['ABB', 'BAB', 'BBA']

combinaisons = combiner(2, 1, 1)
print(combinaisons)
# ['AABC', 'AACB', 'ABAC', 'ABCA', 'ACAB', 'ACBA', 'BAAC', 'BACA', 'BCAA', 'CAAB', 'CABA', 'CBAA']


Si tu veux créer toi-même la fonction créant les combinaisons, jette un oeil dans la doc python de ce module pour voir comment cela se construit.
0
D'accord merci, mais avec une fonction mots(n,p) uniquement , pourrais tu faire quelque chose de similaire ? Désolé je suis pas très bon en informatique^^
0
Bkz ? Es-tu la ?^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Personne ne sait faire ?
0