I am trying to implement the function below into one line of lambda code.
def fac(num):
num = int(num)
if num > 1:
return num * fac(num - 1)
else:
return 1
I have constructed a lambda statement, but I keep getting syntax error:
z = lambda z: if (z > 1) z * (z-1) else 1
Advertisement
Answer
First of all, you can’t refer to a global name z when there is a local variable (the parameter) by the same name.
Thus, we will declare a lambda statement called func and use the ternary operator in the good way.
func = lambda z: z * func(z-1) if (z > 1) else 1
Output
> func(5) 120