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]]
我有一个名为 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]]