Cálculo del factorial de un número [ESP-ENG] | Python

avatar
(Edited)

¡Buenos días! Aquí estoy de vuelta con otra publicación sobre programación, esta vez, con otro clásico de los ejercicios iniciales y que al igual que otros que he traído de este lenguaje, lo he tratado antes en C++.

El enunciado es tan simple como "Cálculo del factorial de un número". Con un bucle for se resuelve sin mayor problema, sin embargo, existe un detalle a considerar y es la validación de los datos que ingrese el usuario por teclado.

Good morning! Here I am back with another post about programming, this time, with another classic of the initial exercises and that like others that I have brought from this language, I have dealt with it before in C++.

The statement is as simple as "Calculating the factorial of a number". With a for loop it is solved without major problem, however, there is a detail to consider and it is the validation of the data that the user enters by keyboard.


Portada post programacion, tech (4).gif

Education separador png.png

El código es realmente corto en comparación a la calculadora de factoriales que hice en C++, cosa que es lógica considerando las características de Python, pero no por ello quiere decir que este último sea superior en todo a C++.

Entrando en materia, el programa se basa en dos funciones y el respectivo llamado de ambas con un print final para mostrar los resultados obtenidos. La primera función se llama "Factorial", y como es lógico pensar, calcula el factorial de un número que se le ingrese por parámetro. Sin embargo, no lo valida, de esto se encarga la siguiente función.

Factorial(n), cuenta con una variable "a", inicializada con valor "1", que será quien almacene el cálculo realizado en el for. Este itera desde 1, hasta n+1, esto para evitar que cuente el 0, pues de ser así, al multiplicar el iterador por la variable "a", el resultado se vería afectado para mal.

Por otro lado, la función "Read_n", se encarga de leer un número, este al principio se transforma en cadena de texto para facilitar su manipulación, pues luego se tratará de convertir a entero en un bloque de tratamiento de excepciones, en donde la operación es, n1 = (int)(n1), es decir, la conversión.

Si se convierte sin problemas (esto incluye el rechazo a números decimales como 5,4), pasa a otra validación, la de rango, pues no se puede calcular el factorial de un número negativo y además, incluí un máximo de 500, pues, aunque se pueden calcular factoriales superiores, el tamaño es sumamente grande.

Finalmente se llama a la función Read_n(), para almacenar su retorno en una variable "n", y luego se imprime el factorial con la función print("El factorial del numero ingresado es: ", Factorial(n)).

Mientras armaba este programa, me encontré con que no lograba que funcionase como deseaba el bloque Try-Except-Else, por lo que tuve que investigar un poco y ver ejemplos antes de aplicarlo. La página que consulté se llama freecodecamp.org.

The code is really short compared to the factorial calculator that I made in C++, which is logical considering the characteristics of Python, but it does not mean that the latter is superior in everything to C++.

Getting into the subject, the program is based on two functions and the respective call of both with a final print to show the results obtained. The first function is called "Factorial", and as it is logical to think, it calculates the factorial of a number that is entered by parameter. However, it does not validate it, this is taken care of by the following function.

Factorial(n), has a variable "a", initialized with value "1", which will store the calculation performed in the for. This iterates from 1 to n+1, this to avoid counting the 0, because if so, when multiplying the iterator by the variable "a", the result would be affected for bad.

On the other hand, the function "Read_n", is in charge of reading a number, this at the beginning is transformed into text string to facilitate its manipulation, because then it will try to convert to integer in an exception handling block, where the operation is, n1 = (int)(n1), that is to say, the conversion.

If it is converted without problems (this includes the rejection to decimal numbers like 5,4), it passes to another validation, the range validation, because the factorial of a negative number cannot be calculated and also, I included a maximum of 500, because, although higher factorials can be calculated, the size is extremely large.

Finally, the function Read_n() is called, to store its return in a variable "n", and then the factorial is printed with the function print("The factorial of the number entered is: ", Factorial(n)).

While i made this program, I found that I could not get the Try-Except-Else block to work the way I wanted it to, so I had to do some research and look at examples before applying it. The page I consulted is called freecodecamp.org.

Education separador png.png

image.png

Education separador png.png

image.png

Education separador png.png

Y bueno... ¡Eso es todo por hoy! He aquí otro pequeño ejercicio de práctica para seguir aprendiendo sobre este maravilloso lenguaje de programación tan popular en nuestros días. Si andas buscando un buen curso de este lenguaje conocido como Python, en lo personal te recomiendo este: Clica aquí.

And well... That's all for today! Little by little I continue advancing in my learning process and as I keep practicing, I will continue sharing content that may be useful for other students. If you are looking for a good course on this language known as Python, I personally recommend you this one: Click here


Redes actualizada.gif


Puedes seguirme por acá si lo deseas:
You can follow me here if you want:

Cuenta secundaria
(Dibujos, edición y juegos) | Secondary account (Drawings, editing and games)



0
0
0.000
16 comments
avatar

Muy bien explica Siro, ya te digo que me recuerdan a las épocas de la uni en las que hubiese sido una bendición tener tu blog a mano jajaja la programación es muy bonita pero es cuestión de ir procesándola poco a poco y practicando mucho, pero a veces uno por sacar las materias va un poco azorado.

Es bueno que sigas ejercitando en diferentes lenguajes, ayuda a entender el mecanismo y eso poco a poco se va quedando en la mente, llega un momento en que uno deduce cosas antes de que se ejecuten.

Sigue divirtiéndote mientras aprendes, es una experiencia genial. 🤟🏻

0
0
0.000
avatar

¡Gracias por tan bonitas palabras! En lo personal ha sido una relación amor-odio, es estresante pero a la vez apasionante, más que todo cuando llega el Eureka y fluyen las líneas de código como los versos en labios de un poeta. Aun me queda muchísimo por aprender, pero poco a poco trato de avanzar.

Gracias por pasarse por acá, le deseo abundantes, gozosas y sanas degustaciones de maravillosos platos en sus próximos viajes. Tan interesantes que el querer como el hacer de la mano de Dios se unan e inunden su alma en una sinfonía de palabras que queden plasme en su blog.

0
0
0.000
avatar

Escribes de forma muy inspiradora para estar tan inmerso en el mundo dev jajaja yo le veo futuro a alguna reseñita por ahí de tu parte, capaz y saliendo de tu zona de confort nos sorprendes un día. Pero lo más importante, sigue disfrutando mucho de lo que realmente te gusta!

0
0
0.000
avatar

HispaPro es un proyecto construido en Hive para apoyar con el marketing, la incorporación, asesorías, curaduría, acompañamiento y más, en la construcción de nuestro ecosistema.

Sigue, contacta y se parte del proyecto en:

Hive
Discord
Twitter
FanBase
Trail
Delegaciones: 10 - 50 - 100 - 500


¡Gracias!

0
0
0.000
avatar

Tu publicacion ha sido votada por el Trail de CAPYBARAEXCHANGE por contenido excepcional y formar parte de nuestra comunidad de usuarios activos.

Unete a nuestro canal de discord en dónde podrás conocer mas acerca de nuestras operaciones y servicios. registrate ingresando en capybaraexchange para disfrutar del servicio

Si quieres formar parte de nuestro trail de curación ingresa a HIVEVOTE, haciendo clic en la imagen del capybara aristocratico. Capybaraexchange tu casa de cambio, rapida, confiable y segura

0
0
0.000
avatar

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support. 
 

0
0
0.000
avatar

Excellent explanation my friend, thank you for sharing this valuable information. Dios te continue bendiciendo @gabrielr29

0
0
0.000
avatar

Muchas gracias por compartir con nosotros amigo, saludos!! 😎

0
0
0.000