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.

  1. 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.
  2. with open("numeros.txt", "r") as f: reabre el mismo archivo en modo lectura. Recuerda que with cierra el archivo solo al terminar el bloque, así que no hay que preocuparse de close().
  3. [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 \n del final y los espacios; sin ese strip(), int("10\n") seguiría funcionando pero es frágil, y una línea de solo espacios rompería la conversión.
  4. int(...) es imprescindible: el archivo guarda "10", texto, no el número 10. Sin convertir, sum fallaría o concatenaría cadenas.
  5. Con la lista de enteros ya limpia, sum(numeros), min(numeros) y max(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: 30

Solució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.

Conexiones