我试图编写一个接受列表大小作为参数的函数,并返回一个新的列表,其中的数字基本上是列表大小的阶乘。但是,我不能使用factorial()函数,因为它抛出"未定义"错误。
输入/输出示例:
puzzle = [[1,2],[2,2]],size = 2 by 2(2),所有数字都可能new_list = [1,2]
puzzle = [[1],[2],[3]],size = 3 by 3(3),所有数字都可能new_list = [1,2,3]
我当前的代码(不工作):
def get_valid_numbers(size):
num=size
valid_list=[]
return valid_list.append(num*factorial(num-1))
我知道这不正确,但我不确定如何修复它。
答案 0 :(得分:0)
这是你正在寻找的吗?
def get_valid_num(size):
valid_list = list(range(1, size + 1))
return valid_list
print("All numbers possible: ", get_valid_num(5))
请注意,此代码不输出阶乘,而是由size参数限定的连续整数列表(+ 1作为range()函数的最终值不包括在内)。
但是,如果您确实要创建列表并使用n-size的阶乘填充它们,则可能需要按如下方式实现:
def factorial(size):
if size <= 2:
return size
else:
size = size * factorial(size - 1)
return size
# This time you build a list of 120 elements (5! = 120)
def get_valid_num(size):
valid_list = list(range(1, factorial(size) + 1))
return valid_list
print("All numbers possible: ", get_valid_num(5))
最后,您可能希望为每个元素创建一个包含计算因子的列表。
def factorial(size):
if size <= 2:
return size
else:
size = size * factorial(size - 1)
return size
# Populate the list with the value of each factored element
def get_valid_num(size):
valid_list = list(range(1, size + 1))
factorials = [factorial(item) for item in valid_list]
return factorials
print("All numbers possible: ", get_valid_num(5))