Duda de Python

En una parte de un problema tengo que hacer la función de un factorial. Lo he hecho así:

--------------------------
def fact(factorial,z):
factorial=z
while z>1:
factorial=factorial*(z-1)
z=z-1

def main():
m = input("Da 1 numero")
fact(factorialm,m)
---------------------------

Si hago esto me da un error al ejecutarlo. La variable factorialm no está definida.
Pues lo que me viene a la cabeza es antes de la línea fact(factorialm,m) escribir 'factorialm=X', siendo X un valor cualquiera.
El problema es que al hacer cálculos más adelante, si por ejemplo multiplico factorialm por 4, el resultado será el valor X.

Qué estoy haciendo mal? He probado de poner un return en la función pero no me aclaro...
IndentationError: expected an indented block

Pues lo dice bien claro, error de sangrado, en python la identación/sangrado, tiene significado.


def fact(n):
res = n
while n>1:
res=res*(n-1)
n=n-1

return res

def recurfact(n):
if n==0: return 1
else: return (n * recurfact(n-1))

n = input("Da 1 numero\n")

print(fact(n))

Ahi lo tienes con 2 soluciones una recursiva.

Mierda, eol se come los tabuladores,adjunto fichero

Factorial
1 respuesta