Tutorial "Pythonizate: Fundamentos de Programación” – Recursividad y Ejemplos de Funciones
Pythonizate "Aprendiendo a programar"
Índice
¡Hola mis queridos entusiastas de la programación! En el post del día de hoy vamos a hablar sobre la recursividad y veremos unos ejemplos de estructuras con funciones.
Recursividad
Una función recursiva
es una forma de programar o codificar un problema, en el cual la función se llama a sí misma de manera directa o indirecta a través de otra función, por lo general devuelve el valor de retorno de dicha función.
Una función recursiva
termina, si con cada llamada recursiva
la solución del problema se reduce y se mueve hacia un caso base (un caso base es un caso en el que el problema se puede resolver sin recurrencia adicional).
Funciones recursivas
Un ejemplo muy frecuente para demostrar el uso de la recursividad
es implementando un factorial
.
El factorial
se representa con el signo !
después del número a encontrar el factorial
, la exclamación significa que hay que multiplicar todos los números que hay entre dicho número y el 1.
Por ejemplo: El factorial
de 5! = 5 x 4 x 3 x 2 x 1 = 120
En Python seria así:
Input
def factorial(n):
if n <= 1:
return 1
else:
return n * factorial(n-1)
num=int(input("Introduzca el factorial a encontrar: "))
resultado=factorial(num)
print("El factorial de ",num,"! es: ",resultado)
Output
Introduzca el factorial a encontrar: 5
El factorial de 5 ! es: 120
En este ejemplo la función factorial
trabaja de la siguiente forma:
Cuando se hace el llamado a la función factorial
este tiene dos casos, el básico y el complejo:
En el caso básico evalúa si el número es mayor o igual a 1, de cumplirse la condición
factorial
devuelve 1.En el caso complejo se expresa el problema como el producto del número y la llamada
recursiva
delfactorial
que evalúa elfactorial del número -1
.
Otro ejemplo de recursividad
es la sucesión de Fibonacci. Fibonacci
es la sucesión infinita de números, esta sucesión comienza con los números 0 y 1, a partir de este cada número será la suma de dos anteriores, definiendo así la recurrencia.
Por ejemplo:
Input
def fibonacci(n):
a = 0
b = 1
while a < n:
print(a, end=" ")
c = a + b
a = b
b = c
print()
num=int(input("Introduzca el limite de la fibonacci: "))
fibonacci(num)
Output
Introduzca el limite de la fibonacci: 10
0 1 1 2 3 5 8
El ejemplo de Fibonacci
trabaja de la siguiente forma, el va a imprimir los valores arrojados por la variable a
en repetidas veces mientras la condición establecida sea verdadera, cuando verifique que a = n
la condición pasará a falsa terminando la ejecución del programa.
Ejemplo de Funciones
- Calculadora básica: Este ejemplo se basa en una calculadora que contiene las 4 operaciones básicas sumar, restar, multiplicar y restar. Su estructura trabaja con todo lo que hemos visto hasta ahora en el tutorial así que es de fácil comprensión.
Input
print("CALCULADORA BASICA|\n")
def sumar(num1, num2):
return num1+num2
def restar(num1, num2):
return num1-num2
def multiplicar(num1, num2):
return num1*num2
def dividir(num1, num2):
return num1/num2
def opciones(opc=0):
print("\nOpcion (1): Sumar")
print("Opcion (2): Restar")
print("Opcion (3): Multiplicar")
print("Opcion (4): Dividir\n")
opcion = int(input("Selecione una Opción: "))
return opcion
opc = opciones()
while (opc!="N"):
if(opc == 1):
print("\n Modulo de suma\n")
num1=int(input("Introduzca el primer digito: "))
num2=int(input("Introduzca el primer digito: "))
resultado= sumar(num1, num2)
print("\nEl resultado de la suma es: ", resultado)
opc = input("\n¿Desea realizar otra operacion? (S/N): ")
if(opc=="N"):
break
elif(opc=="S"):
opc = opciones()
if(opc == 2):
print("\n Modulo de resta\n")
num1=int(input("Introduzca el primer digito: "))
num2=int(input("Introduzca el primer digito: "))
resultado= restar(num1, num2)
print("\nEl resultado de la resta es: ", resultado)
opc = input("\n¿Desea realizar otra operacion? (S/N): ")
if(opc=="N"):
break
elif(opc=="S"):
opc = opciones()
if(opc == 3):
print("\n Modulo de multiplicacion\n")
num1=int(input("Introduzca el primer digito: "))
num2=int(input("Introduzca el primer digito: "))
resultado= multiplicar(num1, num2)
print("\nEl resultado de la multiplicacion es: ", resultado)
opc = input("\n¿Desea realizar otra operacion? (S/N): ")
if(opc=="N"):
break
elif(opc=="S"):
opc = opciones()
if(opc == 4):
print("\n Modulo de division\n")
num1=int(input("Introduzca el primer digito: "))
num2=int(input("Introduzca el primer digito: "))
resultado= dividir(num1, num2)
print("\nEl resultado de la division es: ", resultado)
opc = input("\n¿Desea realizar otra operacion? (S/N): ")
if(opc=="N"):
break
elif(opc=="S"):
opc = opciones()
print("\nGracias por usa la CALCULADORA BASICA")
Output
CALCULADORA BASICA|
Opcion (1): Sumar
Opcion (2): Restar
Opcion (3): Multiplicar
Opcion (4): Dividir
Selecione una Opción: 1
Modulo de suma
Introduzca el primer digito: 2
Introduzca el primer digito: 4
El resultado de la suma es: 6
¿Desea realizar otra operacion? (S/N): S
Opcion (1): Sumar
Opcion (2): Restar
Opcion (3): Multiplicar
Opcion (4): Dividir
Selecione una Opción: 2
Modulo de resta
Introduzca el primer digito: 5
Introduzca el primer digito: 9
El resultado de la resta es: -4
¿Desea realizar otra operacion? (S/N): S
Opcion (1): Sumar
Opcion (2): Restar
Opcion (3): Multiplicar
Opcion (4): Dividir
Selecione una Opción: 3
Modulo de multiplicacion
Introduzca el primer digito: 48
Introduzca el primer digito: 4
El resultado de la multiplicacion es: 192
¿Desea realizar otra operacion? (S/N): S
Opcion (1): Sumar
Opcion (2): Restar
Opcion (3): Multiplicar
Opcion (4): Dividir
Selecione una Opción: 4
Modulo de division
Introduzca el primer digito: 8
Introduzca el primer digito: 10
El resultado de la division es: 0.8
¿Desea realizar otra operacion? (S/N): N
Gracias por usa la CALCULADORA BASICA
Los invito a revisar este ejemplo práctico de funciones y vean que tal les va.
- Puestico de empanadas: En mi país Venezuela un puestico de empanadas es el lugar que nunca puede faltar en la calle, es el que salva la patria los días que vas apurado y no pudiste hacerte desayuno, el que encuentras en todos lados, el que resuelve hasta el almuerzo. Este es un ejercicio para salir de la rutina.
Input
print("PUESTO DE EMPANADAS\n")
def menu(opc = 0):
print("Te tengo:\n[1] Empanada : 400BsF\n[2] Malta: 200BsF\n[3] Refresco: 250BsF\n[4] Lo que me pidas\n")
opcion=int(input("¿Que se te antoja?\n"))
return opcion
def Empanadas():
print("Te tengo de carne mechada, carne molida, pollo, reina pepiada, jamon con queso y queso")
opc = input("\n¿Se te antoja una? (S/N): ")
if(opc=="S" or opc=="s"):
print("Una empanada para ti y mas dinero para mi")
return 1
elif(opc=="N" or opc =="n"):
print("Bueno, esta bien")
return 0
def Maltas():
print("Tengo malta de lata y botella")
opc = input("\n¿Se te antoja una? (S/N): ")
if(opc=="S" or opc=="s"):
print("Una malta para ti y mas dinero para mi")
return 1
elif(opc=="N" or opc =="n"):
print("Bueno, esta bien")
return 0
def Refrescos():
print("Te tengo de Coca-Cola, Pepsi-Cola, Kolita y SevenUp")
opc = input("\n¿Se te antoja una? (S/N): ")
if(opc=="S" or opc=="s"):
print("Un refresco para ti y mas dinero para mi")
return 1
elif(opc=="N" or opc =="n"):
print("Bueno, esta bien")
return 0
total1, total2, total3= 0, 0, 0
print("¡Bienvenido a mi puesto de VENDO EMPANADAS, MALTAS Y REFRESCOS donde vendo empanadas, maltas y refresco!\n")
opc = menu()
while opc != "N" or opc != "n":
if opc == 1:
print("Claro que empanadas, a todos les gustan las empanadas")
empanada = Empanadas()
total1 = total1 + empanada
opc = input("\n¿Deseas algo mas? (S/N): ")
if(opc=="N" or opc=="n"):
break
elif(opc=="S" or opc=="s"):
opc = menu()
if opc == 2:
print("¡Para calmar esa sed!")
malta = Maltas()
total2 = total2 + malta
opc = input("\n¿Deseas algo mas? (S/N): ")
if(opc=="N" or opc=="n"):
break
elif(opc=="S" or opc=="s"):
opc = menu()
if opc == 3:
print("¡Para calmar esa sed!")
refresco = Refrescos()
total3 = total3 + refresco
opc = input("\n¿Deseas algo mas? (S/N): ")
if(opc=="N" or opc=="n"):
break
elif(opc=="S" or opc=="s"):
opc = menu()
if opc == 4:
print("Epaaa es jodiendo, soy tipo serio")
opc = menu()
total = (total1 * 400) + (total2*200) + (total3*250)
if total>0:
print("Mira esto no es gratis, me debes: ",total)
print("Asi que me pagame mi dinero\n")
print("Chao vale")
else:
print("Pa la proxima te hago algo que te guste")
Output
PUESTO DE EMPANADAS
¡Bienvenido a mi puesto de VENDO EMPANADAS, MALTAS Y REFRESCOS donde vendo empanadas, maltas y refresco!
Te tengo:
[1] Empanada : 400BsF
[2] Malta: 200BsF
[3] Refresco: 250BsF
[4] Lo que me pidas
¿Que se te antoja?
1
Claro que empanadas, a todos les gustan las empanadas
Te tengo de carne mechada, carne molida, pollo, reina pepiada, jamon con queso y queso
¿Se te antoja una? (S/N): S
Una empanada para ti y mas dinero para mi
¿Deseas algo mas? (S/N): S
Te tengo:
[1] Empanada : 400BsF
[2] Malta: 200BsF
[3] Refresco: 250BsF
[4] Lo que me pidas
¿Que se te antoja?
1
Claro que empanadas, a todos les gustan las empanadas
Te tengo de carne mechada, carne molida, pollo, reina pepiada, jamon con queso y queso
¿Se te antoja una? (S/N): S
Una empanada para ti y mas dinero para mi
¿Deseas algo mas? (S/N): s
Te tengo:
[1] Empanada : 400BsF
[2] Malta: 200BsF
[3] Refresco: 250BsF
[4] Lo que me pidas
¿Que se te antoja?
2
¡Para calmar esa sed!
Tengo malta de lata y botella
¿Se te antoja una? (S/N): S
Una malta para ti y mas dinero para mi
¿Deseas algo mas? (S/N): N
Mira esto no es gratis, me debes: 1000
Asi que me pagame mi dinero
Chao vale
Este ejercicio me gustó mucho porque ponemos en práctica varias cosas que hemos visto a lo largo del tutorial, anímate a estudiarlo y entenderlo.
Siempre hay que tener en cuenta que cualquier ejercicio se puede convertir en un ejercicio de funciones. Es decir, en cualquier programa se puede seleccionar una porción del programa y convertirla en una función. nuestra tarea como programadores consiste en crear las funciones adecuadas que se puedan utilizar varias veces en el mismo programa o en programas distintos.
Ejercicios desafíos ¡PYTHONIZATE!
1 - Mejorando el primer Ejercicio Desafío: Vamos a mejorar el primer ejercicio desafío haciendo uso de las funciones.
Este ejercicio fue resuelto por @hendersonp. ¿Condiciones? Tratar de usar la mínima cantidad de líneas de código y aprovechar lo visto hasta ahora en el tutorial. Recompensa 1SBD
Post con los datos del ejercicio
Ejercicio Desafio 1.py
2 - Mejorando el segundo Ejercicio Desafío: Vamos a implementar el ordenamiento de mayor a menor haciendo uso de las funciones y añadiremos el ordenamiento de menor a mayor, es decir, después de ingresar los números estos se tienen que mostrar por pantalla de mayor a menor y de menor a mayor.
Este ejercicio fue resuelto por @rafaelaquino ¿Condiciones? Tratar de usar la mínima cantidad de líneas de código, ahora tenemos que ordenar 4 números y aprovechar lo visto hasta ahora en el tutorial. Recompensa 0.5SBD
Post con los datos del ejercicio
Ejercicio Desafio 1.py
3 - Mejorar la Calculadora: Vamos a añadirle a nuestra calculadora básica las funciones de potencia, raíz y otras que la persona considere que debe tener la calculadora.
¿Condiciones? Tratar de usar la mínima cantidad de líneas de código y aprovechar lo visto hasta ahora en el tutorial. Recompensa 0.25SBD
Reglas
- Solo se permite resolver un ejercicio por persona, dejemos que los demás también participen y sean recompensados.
- Tienen 7 días hasta que se cobre esta publicación.
- Se debe subir al canal de Discord y avisar en los comentarios de este post para revisarlo.
- Se pagarán las recompensas al momento de finalizar la publicación y verificar que cumpla con las condiciones.
!Esto fue todo por hoy, nos vemos en el próximo post!
Ya estamos a punto de terminar la parte básica del Tutorial Pythonizate, así que anímate a resolver alguno de los 3 ejercicios para ser uno de los afortunados en ganar SBD por aprender a programar.
Si tienen alguna duda o consulta no duden en dejarla en los comentarios. ¡Éxitos!
"El ser humano es inteligente por naturaleza, la tecnología es solo un complemento"
╭════════════╮
Sígueme en mi Blog
╰════════════╯
Saludos!. Estoy siguiendo poco a poco cada tema, sigue con esas ganas de enseñar ya que salimos favorecidos tus seguidores. Ya subí mi participación
Hola @rafaelaquino! Me siento orgulloso de ti, le has hecho seguimiento a todos los post del tutorial y llegaste a resolver el segundo ejercicio desafió propuesto en este post.
Congratulations! This post has been upvoted from the communal account, @minnowsupport, by vidayaventura from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.
If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.
Saludos @Ramsés mi voto y apoyo para ti.
¡Hola @catalinamorales! Gracias por el apoyo.
Saludos
No encanta!!! Está perfecto. ....
¡Hola @enmy! Me alegro de que te encante, espero que te unas a esta asombrosa aventura de la programación.
Saludo
¡Hola @andrealbm! Gracias por tu comentario, siempre trato de hacer llegar la información de la mejor manera.
Saludos
Excelente post sobre la programación en Python y que bueno que estan creando estos tutoriales, espero que sigas creando cada vez mas
¡Hola @developspanish! Un gusto saludarlos. Me alegro de que se este creando una comunidad de programadores de habla hispana, estaré atento a sus publicaciones.
Saludos