Returns 可以使用大写字母表的前 "n" 个字母构成的所有四字母单词的列表

Returns a list of all four-letter words that can be constructed using the first "n" letters of the uppercase alphabet

我有一个名为 four_letter_list 的函数,目标是 return 一个新列表,其中包含可以使用字母表中的“第 n 个”字母构建的随机 4 字母单词

除了 len、range、for 循环、while 循环和 if-elif-else 语句之外,您不能使用内置 python 函数。

例如: 定义 four_letter_words(2) returns 列表 ['AAAA', 'AAAB', 'AABA', 'AABB', 'ABAA', 'ABAB', 'ABBA', 'ABBB', 'BAAA', 'BAAB', 'BABA', 'BABB', 'BBAA', 'BBAB', 'BBBA', 'BBBB']

这是我的代码

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


我正在考虑使用 group.by,但我们只能使用上述那些功能。

有一个 python 标准库函数:itertools.product 可以执行此操作。否则,就用4层for循环。

在字母表的前 n 个字母上使用 4 个嵌套循环。

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

也许最直接的方法是使用四个嵌套循环 - 每个字母一个 - 在中间进行测试以确保其中一个字母匹配 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))

这可以通过使用递归而不是嵌套循环推广到任何长度的单词。

使用递归:

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]]