Ejercicio 06 — Escribe minmax(lista) que devuelva una tupla

Dificultad: rojo · Módulo 04 (Funciones)

Enunciado

Escribe minmax(lista) que devuelva una tupla (mínimo, máximo). Pide 5 números e imprime el resultado.

Cómo se resuelve

Devolver mínimo y máximo de golpe muestra algo que en C es incómodo: una función Python puede devolver varios valores a la vez empaquetándolos en una tupla.

  1. if not lista: return None, None — si la lista está vacía no hay mínimo ni máximo, así que devolvemos None, None. not lista es True cuando la lista no tiene elementos: en Python una lista vacía se considera “falsa” en un contexto booleano.
  2. minimo = lista[0] y maximo = lista[0] — inicializamos ambos con el primer elemento real, no con 0 ni con un número inventado. Así el punto de partida siempre pertenece a la lista y las comparaciones son válidas aunque haya negativos.
  3. for elemento in lista[1:]: — recorremos desde el segundo elemento (lista[1:] es la lista sin el primero, que ya usamos como referencia). Dentro, if elemento < minimo y if elemento > maximo actualizan cada extremo cuando encontramos algo más pequeño o más grande.
  4. return minimo, maximo — la coma crea una tupla (minimo, maximo). Al llamar, minimo, maximo = minmax(numeros) la desempaqueta en dos variables de una sola línea. En C tendrías que devolver un struct o pasar punteros de salida; aquí la tupla lo resuelve limpio.

Trampa habitual: inicializar minimo/maximo a 0. Si todos los números fueran positivos, el mínimo real nunca bajaría de 0 y darías un resultado falso; si fueran todos negativos, fallaría el máximo. Arrancar con lista[0] evita ese sesgo. Fíjate además en que minmax no usa min() ni max() a propósito: el objetivo es ver el patrón de recorrido a mano.

Para practicar — cópialo y complétalo

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

# Curso de Python — Modulo 04: Funciones
# Ejercicio 06 — PRACTICA (rellena los TODO)
# Enunciado: Escribe minmax(lista) que devuelva una tupla (mínimo, máximo). Pide 5 números e imprime el resultado.
# Dificultad: rojo
# Ejecutar: python3 ej06_practica.py
 
 
def minmax(lista):
    """Devuelve una tupla (minimo, maximo) de los elementos de lista."""
    # TODO: trata el caso de lista vacia: devuelve (None, None)
    # TODO: inicializa minimo y maximo con el primer elemento: lista[0]
    # TODO: recorre lista[1:] (desde el segundo elemento) con un for
    #       Si el elemento actual es menor que minimo, actualiza minimo
    #       Si el elemento actual es mayor que maximo, actualiza maximo
    # TODO: devuelve la tupla (minimo, maximo) — recuerda: return a, b crea una tupla
    pass
 
 
# TODO: pide una linea con input() que contenga 5 numeros separados por espacios
entrada = None  # reemplaza None: input("Introduce 5 numeros separados por espacios: ")
 
# TODO: usa entrada.split() para partir la cadena y convierte cada parte a int
#       Puedes usar una lista por comprension: [int(x) for x in entrada.split()]
numeros = None  # reemplaza None
 
# TODO: llama a minmax(numeros) y desempaqueta el resultado en dos variables: minimo, maximo
# TODO: imprime con f-string: "Min: <minimo>  Max: <maximo>"

Solución — cópiala y ejecútala

# Curso de Python — Modulo 04: Funciones
# Ejercicio 06 — MODELO (resuelto)
# Enunciado: Escribe minmax(lista) que devuelva una tupla (mínimo, máximo). Pide 5 números e imprime el resultado.
# Dificultad: rojo
# Ejecutar: python3 ej06_modelo.py
 
 
def minmax(lista):
    """Devuelve una tupla (minimo, maximo) de los elementos de lista.
 
    No usa las funciones built-in min() ni max() internamente:
    recorre la lista manualmente para ilustrar el patron.
    """
    if not lista:
        return None, None
 
    minimo = lista[0]
    maximo = lista[0]
 
    for elemento in lista[1:]:
        if elemento < minimo:
            minimo = elemento
        if elemento > maximo:
            maximo = elemento
 
    return minimo, maximo
 
 
entrada = input("Introduce 5 numeros separados por espacios: ")
# split() parte la cadena por espacios y devuelve una lista de strings
# La comprension de lista convierte cada string a int
numeros = [int(x) for x in entrada.split()]
 
minimo, maximo = minmax(numeros)
print(f"Min: {minimo}  Max: {maximo}")

Cómo usarlo

Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.

Conexiones