Saltar a contenido

Funciones en Python

1. ¿Qué son las funciones?

Definición de función

En Python, una función es un bloque de código que realiza una tarea específica y puede ser reutilizado a lo largo del programa. Las funciones nos ayudan a dividir nuestro código en módulos más pequeños y manejables. Al usar funciones, evitamos la repetición de código, lo que hace que nuestro programa sea más eficiente y fácil de mantener.

Propósito de las funciones:

  • Reutilizar código: Definir una función una sola vez y llamarla en cualquier parte del programa.
  • Organizar el código: Dividir un programa grande en pequeñas partes que se puedan gestionar mejor.
  • Facilitar la lectura: Aumentar la claridad y comprensión del código al dividir las tareas en bloques bien definidos.

2. Cómo definir y usar funciones en Python

Sintaxis básica de una función:

Para definir una función en Python, usamos la palabra clave def, seguida del nombre de la función y los parámetros entre paréntesis.

def nombre_de_funcion(parametros):
    # Código que realiza la tarea
    return valor
  • def: Es la palabra clave que indica que estamos definiendo una función.
  • nombre_de_funcion: Es el nombre de la función. Debe seguir las mismas reglas de nomenclatura que las variables.
  • parametros: Son los valores que la función recibe para realizar su tarea. Los parámetros pueden ser múltiples y se separan por comas.
  • return: La palabra clave que nos permite devolver un valor desde la función. Si no hay un return, la función no devolverá nada (por defecto retorna None).

Ejemplo de función sencilla:

def saludar():
    print("¡Hola, mundo!")

Para llamar a la función, simplemente escribimos su nombre seguido de paréntesis:

saludar()  # Imprime: ¡Hola, mundo!

3. Parámetros y argumentos

Parámetros y argumentos:

  • Parámetros: Son los valores que la función espera recibir cuando es definida.
  • Argumentos: Son los valores que se pasan a la función cuando la llamamos.

Ejemplo con parámetros:

def saludar(nombre):
    print(f"¡Hola, {nombre}!")

En este caso, nombre es un parámetro de la función. Para llamarla, necesitamos pasar un argumento:

saludar("Juan")  # Imprime: ¡Hola, Juan!

Parámetros por defecto:

Puedes asignar valores por defecto a los parámetros, para que si el usuario no pasa un argumento, se use el valor predeterminado.

def saludar(nombre="Juan"):
    print(f"¡Hola, {nombre}!")

Si no se pasa un argumento, la función usará "Juan" por defecto:

saludar()  # Imprime: ¡Hola, Juan!

4. Funciones que no retornan nada

En Python, las funciones pueden no retornar nada. Si no utilizamos return, la función realiza una acción, pero no devuelve ningún valor.

Ejemplo de función que no retorna valor:

def imprimir_mensaje():
    print("Esto es un mensaje.")

Aunque esta función no devuelve ningún valor, realiza una acción (imprimir un mensaje en la consola).


5. Funciones anónimas en Python (Funciones lambda)

En Python, puedes crear funciones anónimas usando lambda. Estas funciones son útiles cuando se necesita una función simple y no se quiere definir una función completa con def.

Sintaxis de una función lambda:

lambda argumentos: expresión

Ejemplo de función lambda:

suma = lambda x, y: x + y
print(suma(3, 4))  # Imprime: 7

En este caso, lambda crea una función anónima que toma dos argumentos x y y, y devuelve su suma. Esta función se puede utilizar de forma inmediata sin necesidad de crear un nombre para ella.


6. Ejercicios resueltos

Ejercicio 1: Calcular el área de un círculo

Descripción: Crea una función que reciba el radio de un círculo y calcule su área utilizando la fórmula Área = π * radio^2. Usa math.pi para obtener el valor de π.

Ejercicio 1: Calcular el área de un círculo

  • Descripción: Crea una función que reciba el radio de un círculo y calcule su área utilizando la fórmula Área = π * radio^2. Usa math.pi para obtener el valor de π.
Solución
import math

def calcular_area(radio):
    return math.pi * radio ** 2

radio = float(input("Introduce el radio del círculo: "))
area = calcular_area(radio)
print(f"El área del círculo es: {area}")

Ejercicio 2: Saludar a una persona

Descripción: Crea una función que reciba el nombre de una persona y le imprima un mensaje de saludo como "¡Hola, [nombre]!" donde [nombre] es el nombre de la persona.

Ejercicio 2: Saludar a una persona

  • Descripción: Crea una función que reciba el nombre de una persona y le imprima un mensaje de saludo como "¡Hola, [nombre]!" donde [nombre] es el nombre de la persona.
Solución
def saludar(nombre):
    print(f"¡Hola, {nombre}!")

nombre_usuario = input("¿Cómo te llamas? ")
saludar(nombre_usuario)

Ejercicio 3: Convertir grados Celsius a Fahrenheit

Descripción: Crea una función que reciba una temperatura en grados Celsius y la convierta a Fahrenheit utilizando la fórmula Fahrenheit = (Celsius * 9/5) + 32.

Ejercicio 3: Convertir grados Celsius a Fahrenheit

  • Descripción: Crea una función que reciba una temperatura en grados Celsius y la convierta a Fahrenheit utilizando la fórmula Fahrenheit = (Celsius * 9/5) + 32.
Solución
def celsius_a_fahrenheit(celsius):
    return (celsius * 9/5) + 32

celsius = float(input("Introduce la temperatura en grados Celsius: "))
fahrenheit = celsius_a_fahrenheit(celsius)
print(f"{celsius} grados Celsius son {fahrenheit} grados Fahrenheit.")

Ejercicio 4: Calcular la longitud de una lista

Descripción: Crea una función que reciba una lista y devuelva su longitud sin utilizar la función len().

Ejercicio 4: Calcular la longitud de una lista

  • Descripción: Crea una función que reciba una lista y devuelva su longitud sin utilizar la función len().
Solución
def calcular_longitud(lista):
    contador = 0
    for item in lista:
        contador += 1
    return contador

mi_lista = [1, 2, 3, 4, 5]
longitud = calcular_longitud(mi_lista)
print(f"La longitud de la lista es: {longitud}")

Ejercicio 5: Verificar si un número es primo

Descripción: Crea una función que reciba un número y verifique si es un número primo. Un número primo es aquel que solo es divisible por 1 y por sí mismo.

Ejercicio 5: Verificar si un número es primo

  • Descripción: Crea una función que reciba un número y verifique si es un número primo. Un número primo es aquel que solo es divisible por 1 y por sí mismo.
Solución
def es_primo(numero):
    if numero <= 1:
        return False
    for i in range(2, int(numero ** 0.5) + 1):
        if numero % i == 0:
            return False
    return True

numero_usuario = int(input("Introduce un número para verificar si es primo: "))
if es_primo(numero_usuario):
    print(f"El número {numero_usuario} es primo.")
else:
    print(f"El número {numero_usuario} no es primo.")

7. Ejercicios prácticos (sin solución)

Ejercicio 1: Calcular el área de un círculo

  • Descripción: Crea una función que reciba el radio de un círculo y calcule su área utilizando la fórmula Área = π * radio^2. Usa math.pi para obtener el valor de π.

Ejercicio 2: Saludar a una persona

  • Descripción: Crea una función que reciba el nombre de una persona y le imprima un mensaje de saludo como "¡Hola, [nombre]!" donde [nombre] es el nombre de la persona.

Ejercicio 3: Convertir grados Celsius a Fahrenheit

  • Descripción: Crea una función que reciba una temperatura en grados Celsius y la convierta a Fahrenheit utilizando la fórmula Fahrenheit = (Celsius * 9/5) + 32.

Ejercicio 4: Calcular la longitud de una lista

  • Descripción: Crea una función que reciba una lista y devuelva su longitud sin utilizar la función len().

Ejercicio 5: Verificar si un número es primo

  • Descripción: Crea una función que reciba un número y verifique si es un número primo. Un número primo es aquel que solo es divisible por 1 y por sí mismo.

Ejercicio 6: Crear una calculadora simple

  • Descripción: Crea una función que reciba dos números y un operador (+, -, *, /) y devuelva el resultado de la operación.

Ejercicio 7: Convertir minutos a horas y minutos

  • Descripción: Crea una función que reciba un número de minutos y lo convierta en horas y minutos (por ejemplo, 130 minutos -> 2 horas y 10 minutos).

Ejercicio 8: Crear una función que cuente las vocales

  • Descripción: Crea una función que reciba una cadena de texto y cuente cuántas vocales contiene (a, e, i, o, u). La función debe devolver el número de vocales.

Ejercicio 9: Crear una función que reciba un número y lo imprima invertido

  • Descripción: Crea una función que reciba un número entero y lo imprima de manera invertida. Por ejemplo, si recibe 12345, debe imprimir 54321.

Ejercicio 10: Encontrar el valor máximo en una lista

  • Descripción: Crea una función que reciba una lista de números y devuelva el número más grande.

Soluciones ejericios prácticos

Soluciones
    • Descripción: Crea una función que reciba el radio de un círculo y calcule su área utilizando la fórmula Área = π * radio^2. Usa math.pi para obtener el valor de π.

    Calcular el área de un círculo

    1
    2
    3
    4
    5
    6
    7
    8
    import math
    
    def calcular_area(radio):
        return math.pi * radio ** 2
    
    radio = float(input("Introduce el radio del círculo: "))
    area = calcular_area(radio)
    print(f"El área del círculo es: {area}")
    
  1. Saludar a una persona

    • Descripción: Crea una función que reciba el nombre de una persona y le imprima un mensaje de saludo como "¡Hola, [nombre]!" donde [nombre] es el nombre de la persona.
    1
    2
    3
    4
    5
    def saludar(nombre):
        print(f"¡Hola, {nombre}!")
    
    nombre_usuario = input("¿Cómo te llamas? ")
    saludar(nombre_usuario)
    
  2. Convertir grados Celsius a Fahrenheit

    • Descripción: Crea una función que reciba una temperatura en grados Celsius y la convierta a Fahrenheit utilizando la fórmula Fahrenheit = (Celsius * 9/5) + 32.
    1
    2
    3
    4
    5
    6
    def celsius_a_fahrenheit(celsius):
        return (celsius * 9/5) + 32
    
    celsius = float(input("Introduce la temperatura en grados Celsius: "))
    fahrenheit = celsius_a_fahrenheit(celsius)
    print(f"{celsius} grados Celsius son {fahrenheit} grados Fahrenheit.")
    
  3. Calcular la longitud de una lista

    • Descripción: Crea una función que reciba una lista y devuelva su longitud sin utilizar la función len().
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def calcular_longitud(lista):
        contador = 0
        for item in lista:
            contador += 1
        return contador
    
    mi_lista = [1, 2, 3, 4, 5]
    longitud = calcular_longitud(mi_lista)
    print(f"La longitud de la lista es: {longitud}")
    
  4. Verificar si un número es primo

    • Descripción: Crea una función que reciba un número y verifique si es un número primo. Un número primo es aquel que solo es divisible por 1 y por sí mismo.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    def es_primo(numero):
        if numero <= 1:
            return False
        for i in range(2, int(numero ** 0.5) + 1):
            if numero % i == 0:
                return False
        return True
    
    numero_usuario = int(input("Introduce un número para verificar si es primo: "))
    if es_primo(numero_usuario):
        print(f"El número {numero_usuario} es primo.")
    else:
        print(f"El número {numero_usuario} no es primo.")
    
  5. Crear una calculadora simple

    • Descripción: Crea una función que reciba dos números y un operador (+, -, *, /) y devuelva el resultado de la operación.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    def calculadora(num1, num2, operador):
        if operador == "+":
            return num1 + num2
        elif operador == "-":
            return num1 - num2
        elif operador == "*":
            return num1 * num2
        elif operador == "/":
            if num2 != 0:
                return num1 / num2
            else:
                return "Error: División por cero"
        else:
            return "Operador no válido"
    
    num1 = float(input("Introduce el primer número: "))
    num2 = float(input("Introduce el segundo número: "))
    operador = input("Introduce el operador (+, -, *, /): ")
    
    resultado = calculadora(num1, num2, operador)
    print(f"El resultado es: {resultado}")
    
  6. Convertir minutos a horas y minutos

    • Descripción: Crea una función que reciba un número de minutos y lo convierta en horas y minutos (por ejemplo, 130 minutos -> 2 horas y 10 minutos).
    1
    2
    3
    4
    5
    6
    7
    8
    def convertir_a_horas_y_minutos(minutos):
        horas = minutos // 60
        minutos_restantes = minutos % 60
        return horas, minutos_restantes
    
    minutos = int(input("Introduce el número de minutos: "))
    horas, minutos_restantes = convertir_a_horas_y_minutos(minutos)
    print(f"{minutos} minutos son {horas} horas y {minutos_restantes} minutos.")
    
  7. Crear una función que cuente las vocales

    • Descripción: Crea una función que reciba una cadena de texto y cuente cuántas vocales contiene (a, e, i, o, u). La función debe devolver el número de vocales.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    def contar_vocales(texto):
        vocales = "aeiou"
        contador = 0
        for letra in texto.lower():
            if letra in vocales:
                contador += 1
        return contador
    
    texto_usuario = input("Introduce un texto: ")
    cantidad_vocales = contar_vocales(texto_usuario)
    print(f"El texto tiene {cantidad_vocales} vocales.")
    
  8. Crear una función que reciba un número y lo imprima invertido

    • Descripción: Crea una función que reciba un número entero y lo imprima de manera invertida. Por ejemplo, si recibe 12345, debe imprimir 54321.
    1
    2
    3
    4
    5
    6
    def imprimir_invertido(numero):
        return str(numero)[::-1]
    
    numero_usuario = int(input("Introduce un número: "))
    numero_invertido = imprimir_invertido(numero_usuario)
    print(f"El número invertido es: {numero_invertido}")
    
  9. Encontrar el valor máximo en una lista

    • Descripción: Crea una función que reciba una lista de números y devuelva el número más grande.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    def encontrar_maximo(lista):
        maximo = lista[0]
        for numero in lista:
            if numero > maximo:
                maximo = numero
        return maximo
    
    lista_numeros = [10, 25, 3, 8, 15]
    maximo = encontrar_maximo(lista_numeros)
    print(f"El número más grande es: {maximo}")