Tutorial "Pythonizate: Fundamentos de Programación” – Recursividad y Ejemplos de Funciones

in #spanish6 years ago (edited)

Pythonizate "Aprendiendo a programar"

Este tutorial está siendo elaborado para enseñarte a programar en Python desde cero hasta un nivel intermedio – avanzado. Al momento de finalizarlo serás capaz de crear software sencillo aplicando los conceptos aprendidos e incluso crear su propia interfaz gráfica.


Í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

Descargue este ejmeplo

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 del factorial que evalúa el factorial 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 

Descargue este ejemplo

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

Descargue este ejmplo

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

Descargue este ejemplo

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

  1. Solo se permite resolver un ejercicio por persona, dejemos que los demás también participen y sean recompensados.
  2. Tienen 7 días hasta que se cobre esta publicación.
  3. Se debe subir al canal de Discord y avisar en los comentarios de este post para revisarlo.
  4. 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"

Gracias por permitirme robar unos pocos minutos de tu vida. Me despido por los momentos mis lectores, que tengan un excelente día, tarde o noche.
╭════════════╮
Sígueme en mi Blog
╰════════════╯

GIF

Sort:  

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.

¡Saludos!

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

Como siempre hiciste un excelente trabajo en la elaboración de este post, de verdad me encanta la manera tan dinámica como los redactas ya que de este modo podemos comprender de mejor forma el contenido.

¡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

  • ATTE Delevop Spanish (Proxima comunidad para programadores de habla hispana)

¡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