miércoles, 10 de noviembre de 2010

Factorial en Python

Materia: Laboratorio de Lenguajes de Programación.  Semana # 14
Tarea semanal.

Hola. Estuve investigando para hacer el factorial en el lenguaje de Programación Python.

Nota: Recordemos que el "factorial" de un número, es multiplicar todos los números anteriores a él (incluyendo el número del cual queremos su factorial) excepto el cero. Por ejemplo: El factorial de 5 sería: 5x4x3x2x1= 120

Y me encontré con una función de la librería math que hace todo el trabajo por ti, es decir, sólo con el llamado a una función, se obtiene el factorial. En esta entrada explicaré cómo hacerlo.

Paso 1: Abrimos el Terminal, escribimos which python para saber la ubicación de Python para después ponerlo en el encabezado de nuestro código.




Paso 2: Escribimos emacs factorial1.py "emacs" es por el editor de texto que utilizaremos para escribir nuestro código, "factorial1" es el nombre que le puse al archivo (puede ser cualquiera que queramos) y ".py" es la extensión que le pertenece a Python.




Paso 3: Damos Enter y estando en emacs escribimos la ubicación que obtuvimos al principio #!/usr/bin/python




Paso 4: Escribimos import math que es la librería que tiene la función de factorial en este lenguaje.




Paso 5: Esta parte del código, en sí no tiene ninguna función, pero le añade una presentación al programa, que viene siendo como una "bienvenida" al usuario. print "\tFactorial"





Paso 6: En esta parte, el usuario introducirá la un número, para obtener su factorial: num=float(raw_input("Escriba el numero del cual quiere su factorial: "))




Paso 7: Por último, escribimos print math.factorial(num) donde nos imprimirá el resultado del factorial. El "math.factorial" es la función que nos ayuda a obtener el factorial sin la necesidad de hacer todos los procedimientos para sacarlo.





Paso 8: Guardamos nuestro archivo con Ctrl-x Ctrl-s Abrimos la Terminal y damos autorización para ejecutar con chmod u+x factorial1.py y ejecutamos con ./factorial1.py




Paso 9: Abrimos nuestro programa e introducimos el número 5 para probarlo, el resultado que obtenemos es 120.

Es decir, haría esta operación: 5x4x3x2x1

5x4= 20
20x3= 60
60x2= 120
120x1= 120




Esto es todo por esta entrada, espero que les haya servido, y si tienen algo que decir, no duden en comentar.


Hasta luego.


Fuentes: http://artehack.net/foro/python/uso-de-la-libreria-math-%28python%29/

9 comentarios:

  1. Hola Daniela, solo queria comentarte que raw_input() es una función que convierte el dato de entrada (cualquier palabra), en una cadena, lo mejor que podriás utilizar en tu código sería la función int(intput("")).
    Saludos.

    ResponderEliminar
  2. Que tal Gema...

    Efectivamente, estas en lo correcto; sin embargo, recuerda que esta manejando enteros con el factorial, por lo que sólo con poner:

    num = input('Dame numero: ')

    Y ya captura enteros.

    Si te fijas, cuando pone

    num = float(input('texto aqui'))

    Si es necesario porque seguro necesita puntos flotantes.

    Por cierto Daniela, excelente entrada, me quede impresionado, pues me da la idea de investigar más metodos numéricos que solemos utilizar para ahorrar lineas de código.

    PD. Esto implicaria fomentarnos la flojera para crear los procedimientos numericos nosotros mismos, pero yo lo veo como una forma de aprender cosas nuevas.

    ResponderEliminar
  3. Hola, compañeros.

    Gemma: Tienes razón, te agradezco mucho tu colaboración con el dato que nos compartiste, de ahora en adelante utilizaré eso :)

    Crispín: Muchas gracias por complementar la información que nos dio Gemma. Y sí, la verdad que es muy útil esa parte de la librería Math de Python, aunque concuerdo con lo que dices, que nos hace un poco flojos a la hora de programar, aunque sólamente quería compartir una parte importante de la librería que nos ofrece Python.

    Muchas gracias a los dos.

    Hasta luego.

    ResponderEliminar
  4. Tres para Dany, uno para Gemma y Roberto.

    ResponderEliminar
  5. Hola! muchisimas gracias por el tutorial, me ha sido de gran ayuda :D, una pregunta, estoy intentando hacer la funcion factorial sin importar el math, pero no puedo hacerla para que yo inserte el numero y me tire el factorial. Como seria este codigo?

    ResponderEliminar
  6. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  7. I believe this is among the most important information for me.

    And i'm glad reading your article. But wanna commentary on some basic things, The website taste is perfect, the articles is truly nice : D. Good job, cheers

    Feel free to surf to my blog; locate the object

    ResponderEliminar
  8. que funcion uso para el doble factorial??

    ResponderEliminar
  9. Hola, estoy aprendiendo a programar en Python recién llevo pocas horas de aprendizaje y logré hacer mi primer programa sin copiar nada de otro, para calcular el factorial de un número (solo falta poner una condición if para limitar el número si se quiere). Les comparto el código:

    print("\nFACTORIAL DE UN NUMERO")
    print("\n Este programa calcula el factorial de un número")

    numero = int(input("Ingresa un número: "))
    contador = 0
    fact = 1

    for contador in range(1,(numero+1)):
    fact = contador * fact
    print(f"El factorial del número {numero} es {str(fact)}")

    ResponderEliminar