J'ai une fonction appelée four_lettre_liste et le but est de renvoyer une nouvelle liste contenant des mots aléatoires de 4 lettres qui peuvent être construits en utilisant la «nième» lettre de l'alphabet
Vous ne pouvez pas utiliser de fonctions python intégrées en plus des boucles len, range, for, while et if-elif-else.
Ex: def four_letter_words (2) renvoie la liste ['AAAA', 'AAAB', 'AABA', 'AABB', 'ABAA', 'ABAB', 'ABBA', 'ABBB', 'BAAA', 'BAAB' , 'BABA', 'BABB', 'BBAA', 'BBAB', 'BBBA', 'BBBB']
Voici le code que j'ai
def four_letter_words(n): #returns four letter words
new_list = []
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
index = 0
for element in n:
while index >= 1:
return new_list
Je pensais utiliser le group.by mais nous ne pouvons utiliser que ces fonctions comme indiqué ci-dessus.
4 réponses
Le moyen le plus simple serait peut-être d'utiliser quatre boucles imbriquées - une par lettre - avec un test au milieu pour s'assurer que l'une des lettres correspond à n:
def four_letter_words(n):
new_list = []
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letter = alphabet[n-1]
for l1 in alphabet:
for l2 in alphabet:
for l3 in alphabet:
for l4 in alphabet:
if (l1 == letter) or (l2 == letter) or (l3 == letter) or (l4 == letter):
word = l1+l2+l3+l4
new_list.append(word)
return(new_list)
print(four_letter_words(2))
Cela pourrait être généralisé aux mots de n'importe quelle longueur en utilisant la récursivité au lieu de boucles imbriquées.
Utilisation de la récursivité:
def letter_words(n, len=4):
return [''] if len == 0 else [c + l for l in letter_words(n=n, len=len - 1) for c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[:n]]
Utilisez 4 boucles imbriquées sur les n
premières lettres de l'alphabet.
def four_letter_words(n):
"""returns four letter words"""
new_list = []
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
first_n = alphabet[:n]
index = 0
for c1 in first_n:
for c2 in first_n:
for c3 = first_n:
for c4 = first_n:
new_list.append(c1 + c2 + c3 + c4)
return new_list
Il existe une fonction de bibliothèque standard python: itertools.product qui fait cela. Sinon, utilisez simplement une boucle for à 4 couches.
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.