Ejercicio 05 — Lee números de numeros.txt (uno por línea) y muestra suma, mínimo y…
Dificultad: amarillo · Módulo 08 (Clases y archivos)
Enunciado
Lee números de numeros.txt (uno por línea) y muestra suma, mínimo y máximo.
Cómo se resuelve
Leer números de un archivo obliga a un paso extra que las listas en memoria no piden: todo lo que sale de un fichero es texto y hay que convertirlo.
- El bloque
with open("numeros.txt", "w") as f:crea primero un archivo de prueba con tres números, uno por línea, para que el ejercicio funcione sin depender de un fichero externo.f.write(f"{n}\n")escribe cada número seguido de un salto de línea. with open("numeros.txt", "r") as f:reabre el mismo archivo en modo lectura. Recuerda quewithcierra el archivo solo al terminar el bloque, así que no hay que preocuparse declose().[int(linea.strip()) for linea in f if linea.strip()]es una comprensión de lista que hace tres cosas en una línea: recorre el archivo línea a línea (for linea in f), descarta las líneas vacías (if linea.strip()) y convierte cada una en entero.linea.strip()elimina el\ndel final y los espacios; sin esestrip(),int("10\n")seguiría funcionando pero es frágil, y una línea de solo espacios rompería la conversión.int(...)es imprescindible: el archivo guarda"10", texto, no el número 10. Sin convertir,sumfallaría o concatenaría cadenas.- Con la lista de enteros ya limpia,
sum(numeros),min(numeros)ymax(numeros)calculan total, mínimo y máximo directamente.
Trampa habitual: olvidar .strip() y arrastrar el \n invisible al final de cada línea. Aunque int() lo tolere, en comparaciones o al imprimir ese salto oculto provoca errores difíciles de ver.
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 08: Clases, dataclasses y archivos
# Ejercicio 05 — PRACTICA (rellena los TODO)
# Enunciado: Lee números de numeros.txt (uno por línea) y muestra suma, mínimo y máximo.
# Dificultad: amarillo
# Ejecutar: python3 ej05_practica.py
# Este bloque crea el archivo de prueba; no lo modifiques.
with open("numeros.txt", "w") as f:
for n in [10, 20, 30]:
f.write(f"{n}\n")
# TODO: abre "numeros.txt" en modo lectura con open() y with
# TODO: lee todas las lineas y convierte cada una a int (recuerda .strip() para quitar \n)
# guarda los enteros en una lista llamada numeros
# TODO: calcula la suma con sum()
# TODO: calcula el minimo con min()
# TODO: calcula el maximo con max()
# TODO: imprime los resultados con el formato:
# Salida esperada: Suma: 60 | Min: 10 | Max: 30Solución — cópiala y ejecútala
# Curso de Python — Modulo 08: Clases, dataclasses y archivos
# Ejercicio 05 — MODELO (resuelto)
# Enunciado: Lee números de numeros.txt (uno por línea) y muestra suma, mínimo y máximo.
# Dificultad: amarillo
# Ejecutar: python3 ej05_modelo.py
# Primero creamos el archivo de prueba para que el ejercicio sea autocontenido
with open("numeros.txt", "w") as f:
for n in [10, 20, 30]:
f.write(f"{n}\n")
# Ahora leemos y procesamos
with open("numeros.txt", "r") as f:
# strip() elimina el \n de cada linea antes de convertir a int
numeros = [int(linea.strip()) for linea in f if linea.strip()]
total = sum(numeros)
minimo = min(numeros)
maximo = max(numeros)
print(f"Suma: {total} | 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.