A voir également:
- Info python
- Info pc - Guide
- Crystaldisk info - Télécharger - Informations & Diagnostic
- Citizen code python avis - Accueil - Outils
- Wifi info view - Télécharger - Divers Réseau & Wi-Fi
- Darkino info - Accueil - Services en ligne
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.
Simple, n'est-ce pas ?
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 ?
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
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.
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.
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.
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^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question