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.
if not lista: return None, None— si la lista está vacía no hay mínimo ni máximo, así que devolvemosNone, None.not listaesTruecuando la lista no tiene elementos: en Python una lista vacía se considera “falsa” en un contexto booleano.minimo = lista[0]ymaximo = 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.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 < minimoyif elemento > maximoactualizan cada extremo cuando encontramos algo más pequeño o más grande.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 unstructo 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.