我试图编写一个函数,它接受一个列表的大小作为参数,并返回一个新的列表,其中的数字基本上是列表大小的阶乘。但是,我不能使用阶乘()函数,因为它抛出了“未定义”错误。
输入/输出实例:
puzzle=[1,2,2,2],大小=2乘2 (2),所有可能的new_list=1,2数 puzzle=[1,2,3],大小=3乘3 (3),所有可能的new_list=1,2,3数
我的当前代码(不起作用):
def get_valid_numbers(size):
num=size
valid_list=[]
return valid_list.append(num*factorial(num-1))我知道这是不对的,但我不知道怎么解决。
发布于 2018-03-03 11:03:43
这就是你要找的吗?
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大小的阶乘填充它们,则可能需要按以下方式实现
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))https://stackoverflow.com/questions/43023730
复制相似问题