问题描述
我拥有的是:
def factorial (n):
fact = 1
for number in range(1,item+1):
fact = fact * number
return factorial
对于设置:
my_numbs = [0,5,-1]
然后运行功能:
factorial(my_numbs)
但它返回:
<function __main__.factorial>
另一个问题是我让它在for循环中运行,但它表示-1的阶乘为1,但没有-1的阶乘,因此它应返回“”
解决方法
您的阶乘函数没有名为item
的变量,我想这就是您想要的:
def factorial (n):
if n < 0:
return "" #This is as per your specification
fact = 1
for number in range(1,n+1):
fact = fact * number
return fact
此功能将为您提供任意数字'n'的阶乘。 但是,您需要列表中所有元素的阶乘。因此,您只需将函数映射到数字列表即可。
my_numbs = [0,1,2,3,4,5,-1]
result = list(map(factorial,my_numbs))
,
您有3个问题。
1您的函数必须返回事实而不是阶乘。
2您使用列表“ my_numbs”调用函数,但它需要一个整数
3您必须遍历my_numbs才能实现2
我的猜测:看起来-1是“列表结束”指示器。在我的示例中,我在-1上结束了迭代。
-xmx
结果
def factorial(n):
fact = 1
for number in range(1,n+1):
fact = fact * number
return fact
my_numbs = [0,-1]
index = 0
while True:
if my_numbs[index] == -1:
break
print(factorial(my_numbs[index]))
index += 1