Python 我需要使用函数“求一个数的阶乘”;减少;

Python 我需要使用函数“求一个数的阶乘”;减少;,python,python-3.x,reduce,Python,Python 3.x,Reduce,给定一个数字“n”,使用reduce()输出其阶乘 注意:确保处理零的边缘情况。如你所知,0!=一, from functools import reduce n = int(input()) f = reduce(lambda n : n * (n - 1) if n > 1 else n) print(f) 另外,我需要帮助解决下面提到的这种类型的错误 TypeError: reduce expected at least 2 arguments, got 1 reduce需要两

给定一个数字“n”,使用reduce()输出其阶乘

注意:确保处理零的边缘情况。如你所知,0!=一,

from functools import reduce

n = int(input())
f = reduce(lambda n : n * (n - 1) if n > 1 else n)
print(f)
另外,我需要帮助解决下面提到的这种类型的错误

TypeError: reduce expected at least 2 arguments, got 1

reduce
需要两个参数。首先是一个需要两个参数的函数,然后是一个iterable。正确的代码应该是这样的

from functools import reduce
n = int(input())
f = 1 if n == 0 else reduce(lambda a, b : a*b, range(1, n+1))

print(f)

RTL(ovely)M:您正在混淆递归函数和
reduce
。如何,我不确定。如果n>0,则可以使用
f=reduce(lambda x,y:x*y,range(1,n+1)),否则为1
。规范复制包含许多计算阶乘的方法。。包括那些使用
reduce
-我认为没有理由在这里创建“特定”问题。请在询问之前进行研究-这将帮助您更快。当
n
为零时如何处理?谢谢您的帮助。如何更正下面提到的代码:从functools导入reduce n=int(input())def fact(n):if(n==0):返回1其他:返回n*fact(n-1)f=reduce(λn:n*n-1)打印(f)