martes, 21 de diciembre de 2010

Factorial de un número en Python

No se si sabéis que el factorial de un número, por ejemplo del número 3, es el número multiplicado por sus números naturales anteriores (a excepción del 0). Se representa así: 3!

Por ejemplo: 3!=3*2*1=6

Si vamos a trabajar con factoriales con nuestros programas en Python, o símplemente queremos hacer un macro que nos calcule directamente el factorial sin tener que sacar la calculadora (o por curiosidad), aquí pongo este tutorial, sobre cómo sacar el factorial de un número con Python (en este caso Python 3):

# Inicio del codigo
def f(n):
    a=1
    if n<0:
        return 0
    elif n==0:
        return 0
    else:
        for i in range(2,n+1):
            a=a*i
        return a
# Fin del codigo

Este código se puede meter en la línea de comandos directamente, o dentro de un programa, y si haces ésto último, asegúrate de que estableces el valor de n antes de llamar a la función.

Creamos una función llamada f, como la de arriba, a la que le pasamos un parámetro, n, que va a ser el número del que queremos sacar su factorial. Si el número introducido es negativo o 0, la respuesta por pantalla será 0. En cambio si es positivo, multiplicamos 1 (a) por los naturales anteriores de n. Por ejemplo si es 3, multiplicaremos por 3 y 2 (el 1 es despreciable). Para que Python me tomara n dentro del rango, tuve que poner n+1.
Así si introducimos el 3, el rango será de 2 a 4, pero el 4 no me lo toma, asique es de 2 a 3, por lo que multiplicaremos 2*3*1=6.
Tras haber calculado esto, mostraremos en pantalla el factorial.

Hemos acabado de hacer la función. Recuerda que estas 9 líneas de código no se ejecutarán si no llamamos a la función, asique vamos a llamarla.
Para llamar a la funcion (o sacar el factorial de un número) tecleamos (en la consola):

>>> f(3)

Esto nos sacará por pantalla el factorial del 3, que es 6. Y así con todos:

>>> f(6)
720
>>> f(10)
3628800

La ventaja de haber creado una función con esto es que podemos trabajar con factoriales dentro de nuestro programa, por ejemplo:

>>> f(4)+3
27

También podemos operar con varios factoriales a la vez:

>>> (f(5)+f(4))-f(3)
138

6 comentarios:

Sario dijo...

muy bien, Pedro.

Sario dijo...

otra forma:

#Factorial de un numero
num=input("Introduce un numero : ")
n=num-1
while n>0:
num*=n
n-=1
print "su factorial es ",num

Juguetes Metin dijo...

Me gusta mas esta forma =) estoy empezando y estoy estudiando por mi cuenta gracias a un libro que encontre en internet y me resulta aun mas facil poner menos comandos que no me sepa =P

Juguetes Metin dijo...

Me resulta mas facil de esta forma porque estoy empezando y me resulta mas comodo usar while

Anónimo dijo...

La de finici ón del factorial de un n úmero es:
n! = n*(n-1)*(n-2)...1
Adem as la regla dice que 0! = 1
ejemplo: factorial de 5 = 5!=5*(5-1)*(5-2)*(5-3)*(5-4)=120 y esto se aplica para cualquier número.

(en c++ de python 2)

n=int(raw_input("entero positivo:"))
x=1
for f in range (n):
x=x*(f+1)
print x

Anónimo dijo...

def factorial(numer):
if numer>=1:

f=numer
while numer>=2:
numer=numer-1
f=f*(numer)
print("el factorial es: ",f)
if numer==0:
print("el factorial es 1")


factorial(int(input("ingrese el numero para calcular su factorial: ")))