Saltar a contenido

Ejercitación de funciones y subrutinas definidas por el usuario

Consejos para resolver los ejercicios

  1. Divide y vencerás: si un ejercicio parece complicado, divídelo en pasos más pequeños.

  2. Prueba tus funciones: asegúrate de probar cada función con diferentes entradas para verificar su correcto funcionamiento.

  3. Documenta tu código: Agrega comentarios a tu código para explicar qué hace cada parte, esto te ayudará a ti y a otros a entenderlo mejor.

¡Diviértete programando!

Ejercicios

  1. Saludar Crea una función que imprima en pantalla un saludo. Por ejemplo: Hola, ¿cómo estás?

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    def saludar():
        print("Hola, ¿cómo estás?")
    
    saludar()
    
    Terminal (Entrada/Salida)
    Hola, ¿cómo estás?
    

    En este caso, la función saludar() imprime en pantalla un saludo.
    El programa llama a la función saludar() para que imprima el saludo en la salida estándar.

    Puedes modificar el saludo impreso en pantalla para personalizarlo a tu gusto.


¿Sabías que...?

La mayoría de las funciones, propias del lenguaje o definidas por el usuario, de un programa cumplen con la tarea de realizar algún cálculo y retornar el resultado obtenido para ser utilizado en otra parte del programa.

  1. Sumar dos números
    Crea una función que reciba dos números como parámetros y retorne su suma.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    def sumar(n1, n2):
        return n1 + n2
    
    n1 = int(input("Ingrese el primer número: "))
    n2 = int(input("Ingrese el segundo número: "))
    
    print(f"La suma de {n1} y {n2} es: {sumar(n1, n2)}")
    
    Terminal (Entrada/Salida)
    Ingrese el primer número: 5
    Ingrese el segundo número: 3
    La suma de 5 y 3 es: 8
    

    En este caso, la función sumar() recibe dos números como parámetros y devuelve su suma.
    El programa solicita al usuario que ingrese dos números.
    Luego, llama a la función sumar() con los números ingresados como argumentos y esta devuelve el resultado calculado. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Recuerda que puedes modificar los números ingresados para probar diferentes combinaciones.

    También puedes modificar la función sumar() para realizar otras operaciones matemáticas, como resta, multiplicación o división.

    La salida en pantalla la generamos con una f-string para mostrar el resultado de la suma de manera clara y legible, pero también podrías utilizar concatenación de cadenas o cualquier otro método que prefieras.


  2. Calcular el perímetro de un rectángulo
    Escribe una función que reciba la base y la altura de un rectángulo y retorne su perímetro. Usa la fórmula perímetro = 2 × (base + altura).

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    def perimetro_rectangulo(base, altura):
        return 2 * (base + altura)
    
    base = float(input("Ingrese la base del rectángulo: ")) # Usa float para permitir decimales
    altura = float(input("Ingrese la altura del rectángulo: ")) # Usa float para permitir decimales
    
    print(f"El perímetro del rectángulo con base {base} y altura {altura} es: {perimetro_rectangulo(base, altura)}")
    
    Terminal (Entrada/Salida)
    Ingrese la base del rectángulo: 5.5
    Ingrese la altura del rectángulo: 3.25
    El perímetro del rectángulo con base 5.5 y altura 3.25 es: 17.5
    

    En este caso, la función perimetro_rectangulo() recibe la base y la altura de un rectángulo como parámetros y devuelve su perímetro.
    El programa solicita al usuario que ingrese la base y la altura del rectángulo.
    Luego, llama a la función perimetro_rectangulo() con la base y la altura ingresadas como argumentos y esta devuelve el perímetro calculado. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Usa float para permitir decimales en la base y la altura del rectángulo.
    Si prefieres trabajar solo con números enteros, puedes cambiar float por int.
    Recuerda que puedes modificar la base y la altura ingresadas para obtener diferentes resultados.


  3. Calcular el área de un triángulo Crea una función que reciba la base y la altura de un triángulo y retorne su área. Usa la fórmula área = (base × altura) / 2.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    def area_triangulo(base, altura):
        return (base * altura) / 2
    
    base = float(input("Ingrese la base del triángulo: ")) # Usa float para permitir decimales
    altura = float(input("Ingrese la altura del triángulo: ")) # Usa float para permitir decimales
    
    print(f"El área del triángulo con base {base} y altura {altura} es: {area_triangulo(base, altura)}")
    
    Terminal (Entrada/Salida)
    Ingrese la base del triángulo: 4.5
    Ingrese la altura del triángulo: 3
    El área del triángulo con base 4.5 y altura 3.0 es: 6.75
    

    En este caso, la función area_triangulo() recibe la base y la altura de un triángulo como parámetros y devuelve su área.
    El programa solicita al usuario que ingrese la base y la altura del triángulo.
    Luego, llama a la función area_triangulo() con la base y la altura ingresadas como argumentos y esta devuelve el área calculada. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Usa float para permitir decimales en la base y la altura del triángulo.
    Si prefieres trabajar solo con números enteros, puedes cambiar float por int.
    Recuerda que puedes modificar la base y la altura ingresadas para obtener diferentes resultados.


  4. Calcular el área de un círculo
    Escribe una función que reciba el radio de un círculo y retorne su área. Usa la fórmula area = π × radio².

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    8
    import math # Importamos el módulo math para acceder a la constante pi (π)
    
    def area_circulo(radio):
        return math.pi * radio ** 2 # ** es el operador de potenciación
    
    radio = float(input("Ingrese el radio del círculo: ")) # Usa float para permitir decimales
    
    print(f"El área del círculo con radio {radio} es: {area_circulo(radio)}")
    
    Terminal (Entrada/Salida)
    Ingrese el radio del círculo: 2.5
    El área del círculo con radio 2.5 es: 19.634954084936208
    

    En este caso, la función area_circulo() recibe el radio de un círculo como parámetro y devuelve su área.
    El programa solicita al usuario que ingrese el radio del círculo. Luego, llama a la función area_circulo() con el radio ingresado como argumento y esta devuelve el área calculada. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Para acceder al valorde la constante π (pi), importamos el módulo math. No te preocupes si no entiendes completamente cómo funciona, simplemente recuerda que math.pi te da el valor de π.
    Si no te sientes a gusto usando módulos, puedes asignar el valor de π manualmente. Por ejmplor, pi = 3.14159. Y luego usar pi en lugar de math.pi: return pi * radio ** 2.

    Recuerda que puedes modificar el radio ingresado para obtener diferentes resultados.


  5. Calcular el volumen de un cubo
    Desarrolla una función que reciba el lado de un cubo y retorne su volumen. Usa la fórmula volumen = lado³.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    def volumen_cubo(lado):
        return lado ** 3 # ** es el operador de potenciación
    
    lado = float(input("Ingrese el lado del cubo: ")) # Usa float para permitir decimales
    
    print(f"El volumen del cubo con lado {lado} es: {volumen_cubo(lado)}")
    
    Terminal (Entrada/Salida)
    Ingrese el lado del cubo: 3.5
    El volumen del cubo con lado 3.5 es: 42.875
    

    En este caso, la función volumen_cubo() recibe el lado de un cubo como parámetro y devuelve su volumen. El programa solicita al usuario que ingrese el lado del cubo. Luego, llama a la función volumen_cubo() con el lado ingresado como argumento y esta devuelve el volumen calculado. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Usa float para permitir decimales en el lado del cubo. Si prefieres trabajar solo con números enteros, puedes cambiar float por int. Recuerda que puedes modificar el lado ingresado para obtener diferentes resultados.


  6. Pitágoras y los triángulos rectángulos Escribe una función que reciba la longitud de los dos catetos y de la hipotenusa de un triángulo y retorne si el triángulo es rectángulo o no.
    La función debe pasar al programa principal una cadena de caracteres con la respuesta formateada, por ejemplo: "El triángulo de catetos 3 y 4 y de hipotenusa 5 es rectángulo." o "El triángulo de catetos 3 y 4 y de hipotenusa 6 no es rectángulo.".

    Fórmula de Pitágoras

    En un triángulo rectángulo, el cuadrado de la hipotenusa es igual a la suma de los cuadrados de los catetos.
    Es decir, si a y b son los catetos y c es la hipotenusa, entonces a² + b² = c².

    Haz clic aquí para ver la solución propuesta
    Python
    def es_triangulo_rectangulo(cateto1, cateto2, hipotenusa):
    
        if cateto1 ** 2 + cateto2 ** 2 == hipotenusa ** 2: # Comprueba si se cumple la fórmula de Pitágoras
            return f"El triángulo de catetos {cateto1} y {cateto2} y de hipotenusa {hipotenusa} es rectángulo."
        else:
            return f"El triángulo de catetos {cateto1} y {cateto2} y de hipotenusa {hipotenusa} no es rectángulo."
    
    cateto1 = float(input("Ingrese la longitud del primer cateto: ")) # Usa float para permitir decimales
    cateto2 = float(input("Ingrese la longitud del segundo cateto: ")) # Usa float para permitir decimales
    hipotenusa = float(input("Ingrese la longitud de la hipotenusa: ")) # Usa float para permitir decimales
    
    print(es_triangulo_rectangulo(cateto1, cateto2, hipotenusa))
    
    Terminal (Entrada/Salida)
    Ingrese la longitud del primer cateto: 3
    Ingrese la longitud del segundo cateto: 4
    Ingrese la longitud de la hipotenusa: 5
    El triángulo de catetos 3.0 y 4.0 y de hipotenusa 5.0 es rectángulo.
    
    Ingrese la longitud del primer cateto: 3
    Ingrese la longitud del segundo cateto: 4
    Ingrese la longitud de la hipotenusa: 6
    El triángulo de catetos 3.0 y 4.0 y de hipotenusa 6.0 no es rectángulo.
    

    En este caso, la función es_triangulo_rectangulo() recibe la longitud de los dos catetos y de la hipotenusa de un triángulo como parámetros y retorna si el triángulo es rectángulo o no.
    El programa solicita al usuario que ingrese la longitud del primer cateto, del segundo cateto y de la hipotenusa del triángulo.
    Luego, llama a la función es_triangulo_rectangulo() con las longitudes ingresadas como argumentos y esta retorna la respuesta formateada a través de una f-string. Finalmente, imprime la respuesta en la salida estándar.


  7. Función de doble resultado En general, pesar de que las funciones retornan un solo valor, en Python también es posible retornar múltiples valores en la misma sentencia de retorno. Para entender este concepto, resuelve el siguiente ejercicio:

    1. Crea una función que reciba 2 números en un determinado orden y que los retorne en el orden inverso (intercambiados). Antes de retornar los valores, imprime en pantalla la frase "Magia Magia... ¡Los valores han sido intercambiados!".
    2. Ingresa 2 números por teclado y almacénalos en las variables n1 y n2.
    3. Luego, imprime en pantalla cada valor ingresado indicando cual es n1 y cual es n2.
    4. A continuación, llama a la función creada en el paso 1 con los números ingresados como argumentos y almacena los valores retornados en las variables n1 y n2, respectivamente.
    5. Por último, imprime en pantalla los valores almacenados en n1 y n2, indicando cual es cual.

    Por ejemplo, para los valores 4 y 5, el programa debe responder de la siguiente manera:

    Terminal (Entrada/Salida)
    Ingrese el primer número: 4
    Ingrese el segundo número: 5
    
    El valor almacenado en n1 es 4
    El valor almacenado en n2 es 5
    
    Magia Magia... ¡Los valores han sido intercambiados!
    
    Ahora, el valor almacenado en n1 es 5
    Ahora, el valor almacenado en n2 es 4
    
    Haz clic aquí para ver la solución propuesta
    Python
    def intercambiar(n1, n2):
        print("Magia Magia... ¡Los valores han sido intercambiados!")
        return n2, n1
    
    n1 = int(input("Ingrese el primer número: "))
    n2 = int(input("Ingrese el segundo número: "))
    
    print(f"El valor almacenado en n1 es {n1}")
    print(f"El valor almacenado en n2 es {n2}")
    
    n1, n2 = intercambiar(n1, n2) # Este procedimiento se llama "desempaquetado" de valores (_unpacking_)
    
    print(f"Ahora, el valor almacenado en n1 es {n1}")
    print(f"Ahora, el valor almacenado en n2 es {n2}")
    
    Terminal (Entrada/Salida)
    Ingrese el primer número: 4
    Ingrese el segundo número: 5
    El valor almacenado en n1 es 4
    El valor almacenado en n2 es 5
    Magia Magia... ¡Los valores han sido intercambiados!
    Ahora, el valor almacenado en n1 es 5
    Ahora, el valor almacenado en n2 es 4
    

    En este caso, la función intercambiar() recibe dos números como parámetros y los retorna en el orden inverso.
    El programa solicita al usuario que ingrese dos números.
    Luego, imprime en pantalla los valores ingresados indicando cual es n1 y cual es n2.
    A continuación, llama a la función intercambiar() con los números ingresados como argumentos y almacena los valores retornados en las variables n1 y n2, respectivamente.
    Finalmente, imprime en pantalla los valores almacenados en n1 y n2, indicando cual es cual.

    Recuerda que puedes modificar los números ingresados para obtener diferentes resultados.


  8. Contar caracteres en una cadena
    Escribe una función que reciba una cadena y retorne el número total de caracteres en ella. Elimina los espacios en blanco.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    def contar_caracteres(cadena):
        return len(cadena.replace(" ", "")) # Elimina los espacios en blanco y cuenta los caracteres
    
    cadena = input("Ingrese una cadena de texto: ")
    
    print(f"La cadena tiene {contar_caracteres(cadena)} caracteres")
    
    Terminal (Entrada/Salida)
    Ingrese una cadena de texto: Hola, Mundo!
    La cadena tiene 10 caracteres
    

    En este caso, la función contar_caracteres() recibe una cadena como parámetro y devuelve el número total de caracteres en ella.
    El programa solicita al usuario que ingrese una cadena de texto.
    Luego, llama a la función contar_caracteres() con la cadena ingresada como argumento y esta devuelve la cantidad de caracteres contados, eliminando los espacios en blanco. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Para contar los caracteres, se utiliza el método replace() para eliminar los espacios en blanco de la cadena y luego se aplica la función len() para obtener la longitud de la cadena resultante.

    Si deseas contar los espacios en blanco, simplemente elimina el método replace(" ", "") y usa len(cadena) directamente.

    Recuerda que puedes modificar la cadena ingresada para obtener diferentes resultados.


  9. Concatenar dos cadenas
    Crea una función que reciba dos cadenas y retorne una nueva cadena que sea la concatenación de ambas.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    def concatenar_cadenas(cadena1, cadena2):
        return cadena1 + cadena2
    
    cadena1 = input("Ingrese la primera cadena de texto: ")
    cadena2 = input("Ingrese la segunda cadena de texto: ")
    
    print(f"La concatenación de las cadenas es: {concatenar_cadenas(cadena1, cadena2)}")
    
    Terminal (Entrada/Salida)
    Ingrese la primera cadena de texto: gira
    Ingrese la segunda cadena de texto: sol
    La concatenación de las cadenas es: girasol
    

    En este caso, la función concatenar_cadenas() recibe dos cadenas como parámetros y devuelve una nueva cadena que es la concatenación de ambas.
    El programa solicita al usuario que ingrese dos cadenas de texto.
    Luego, llama a la función concatenar_cadenas() con las cadenas ingresadas como argumentos y esta devuelve la concatenación de ambas. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Recuerda que puedes modificar las cadenas ingresadas para obtener diferentes resultados.


  10. Repetir una cadena Crea una función que reciba una cadena y un número entero n, y retorne la cadena repetida n veces en el mismo renglón, separadas por un espacio.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    def repetir_cadena(cadena, n):
        return ((cadena + " ") * n).strip() # Repite la cadena n veces y elimina el espacio al final
    
    cadena = input("Ingrese una cadena de texto: ")
    n = int(input("Ingrese un número entero: "))
    
    print(f"La cadena repetida {n} veces es: {repetir_cadena(cadena, n)}")
    
    Terminal (Entrada/Salida)
    Ingrese una cadena de texto: Hola
    Ingrese un número entero: 3
    La cadena repetida 3 veces es: Hola Hola Hola
    

    En este caso, la función repetir_cadena() recibe una cadena y un número entero n como parámetros y devuelve la cadena repetida n veces en el mismo renglón, separadas por un espacio.
    El programa solicita al usuario que ingrese una cadena de texto y un número entero.
    Luego, llama a la función repetir_cadena() con la cadena y el número ingresados como argumentos y esta devuelve la cadena repetida n veces. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    El operador * se utiliza para repetir la cadena n veces y el método strip() elimina el espacio en blanco al final de la cadena resultante.

    Recuerda que puedes modificar la cadena y el número ingresados para obtener diferentes resultados.


  11. Invertir una cadena
    Desarrolla una función que reciba una cadena y retorne la misma cadena pero invertida.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    def invertir_cadena(cadena):
        return cadena[::-1] # Recuerda que [::-1] invierte la cadena
    
    cadena = input("Ingrese una cadena de texto: ").strip() # Elimina espacios en blanco al inicio y al final
    
    print(f"La cadena invertida es: {invertir_cadena(cadena)}")
    
    Terminal (Entrada/Salida)
    Ingrese una cadena de texto: Hola, Mundo!
    La cadena invertida es: !odnuM ,aloH
    

    En este caso, la función invertir_cadena() recibe una cadena como parámetro y devuelve la misma cadena pero invertida.
    El programa solicita al usuario que ingrese una cadena de texto, la cual se almacena en la variable cadena, y se eliminan los espacios en blanco al inicio y al final.
    Luego, llama a la función invertir_cadena() con la cadena ingresada como argumento y esta devuelve la cadena invertida. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Si no recuerdas cómo funciona la notación [::], puedes repasar la lección sobre Rebanadas (slicing) haciendo clic aquí.

    Pero, básicamente, se utiliza la sintaxis de rebanado de Python cadena[::-1] para obtener una nueva cadena que es la cadena original invertida.
    El paso -1 en el rebanado indica que se debe proceder de derecha a izquierda, lo que efectivamente invierte el orden de los caracteres.
    Finalmente, se retorna la cadena invertida.

    Otra forma de invertir una cadena es utilizando la función reversed() junto con join():

    Python
    1
    2
    3
    4
    5
    6
    def invertir_cadena(cadena):
        return ''.join(reversed(cadena))
    
    cadena = input("Ingrese una cadena de texto: ").strip() # Elimina espacios en blanco al inicio y al final
    
    print(f"La cadena invertida es: {invertir_cadena(cadena)}")
    

  12. Obtener el primer caracter de una cadena
    Escribe una función que reciba una cadena y retorne el primer caracter de la misma.
    Recuerda como se indexan las cadenas en Python. Es decir, cómo se identifica al primer caracter, al segundo, y así sucesivamente.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    def primer_caracter(cadena):
        return cadena[0] # Obtiene el primer caracter de la cadena
    
    cadena = input("Ingrese una cadena de texto: ")
    
    print(f"El primer caracter de la cadena es: {primer_caracter(cadena)}")
    
    Terminal (Entrada/Salida)
    Ingrese una cadena de texto: Python
    El primer caracter de la cadena es: P
    

    En este caso, la función primer_caracter() recibe una cadena como parámetro y devuelve el primer caracter de la misma.
    El programa solicita al usuario que ingrese una cadena de texto.
    Luego, llama a la función primer_caracter() con la cadena ingresada como argumento y esta devuelve el primer caracter de la cadena. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Recuerda que puedes modificar la cadena ingresada para obtener diferentes resultados.


  13. Obtener el último caracter de una cadena
    Desarrolla una función que reciba una cadena y retorne el último caracter de la misma.
    Recuerda como se indexan las cadenas en Python. Es decir, cómo se identifica al primer caracter, al segundo, y así sucesivamente.
    También recuerda como es posible obtener el último caracter de una cadena. O como recorrer una cadena de derecha a izquierda.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    def ultimo_caracter(cadena):
        return cadena[-1] # Obtiene el último caracter de la cadena
    
    cadena = input("Ingrese una cadena de texto: ")
    
    print(f"El último caracter de la cadena es: {ultimo_caracter(cadena)}")
    
    Terminal (Entrada/Salida)
    Ingrese una cadena de texto: Python
    El último caracter de la cadena es: n
    

    En este caso, la función ultimo_caracter() recibe una cadena como parámetro y devuelve el último caracter de la misma.
    El programa solicita al usuario que ingrese una cadena de texto.
    Luego, llama a la función ultimo_caracter() con la cadena ingresada como argumento y esta devuelve el último caracter de la cadena. Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Recuerda que puedes modificar la cadena ingresada para obtener diferentes resultados.


  14. Obtener un caracter en el orden específico de una cadena
    Crea una función que reciba una cadena y un número entero n, y retorne el caracter según el orden n de la cadena.
    Por ejemplo, si se ingresan la cadena "Python" y el número 3, la función deberá devolver la letra "t". A los efectos prácticos, el entero n será siempre válido. Recuerda como se indexan las cadenas en Python. Es decir, cómo se identifica al primer caracter, al segundo, y así sucesivamente.

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    def caracter_n(cadena, n):
        return cadena[n - 1] # Obtiene el caracter en la posición n de la cadena
    
    cadena = input("Ingrese una cadena de texto: ")
    n = int(input("Ingrese el número de caracter que desea obtener: "))
    
    print(f"El caracter en el orden {n} de la cadena es: {caracter_n(cadena, n)}")
    
    Terminal (Entrada/Salida)
    Ingrese una cadena de texto: Python
    Ingrese el número de caracter que desea obtener: 3
    El caracter en el orden 3 de la cadena es: t
    

    En este caso, la función caracter_n() recibe una cadena y un número entero n como parámetros y devuelve el caracter según el orden n de la cadena.
    El programa solicita al usuario que ingrese una cadena de texto y un número entero.
    Luego, llama a la función caracter_n() con la cadena y el número ingresados como argumentos y esta devuelve el caracter en la posición n-1 de la cadena.
    Finalmente, imprime el resultado a través de una f-string en la salida estándar.

    Analizando n-1, esto es así porque los índices en Python, como en cualquier otro lenguaje en general, comienzan en 0.
    Por lo tanto, el primer caracter tiene índice 0, el segundo índice 1, y así sucesivamente.
    Si se desea obtener el caracter en la posición n, se debe restar 1 al valor de n para obtener el índice correcto.
    De esta forma, si se ingresa 3, se obtiene el caracter en la posición 2 de la cadena.

    Recuerda que puedes modificar la cadena y el número ingresados para obtener diferentes resultados.