Ir al contenido

Errores y archivos

Los errores son parte normal del desarrollo. Tu tarea es leerlos, aislar la causa y decidir si debes corregir el codigo o manejar una situacion esperada.

numero = int("hola")

Error:

ValueError: invalid literal for int() with base 10: 'hola'

Traduccion: intentaste convertir "hola" a entero, pero no representa un numero.

def convertir_a_entero(texto):
try:
return int(texto)
except ValueError:
return None
print(convertir_a_entero("42"))
print(convertir_a_entero("hola"))

Salida:

42
None

Retorno: devuelve int si puede convertir; devuelve None si el texto no es numerico.

Evita esto:

try:
resultado = 10 / 0
except Exception:
print("algo fallo")

Es mejor capturar el error especifico:

try:
resultado = 10 / 0
except ZeroDivisionError:
print("no se puede dividir entre cero")
with open("notas.txt", "w", encoding="utf-8") as archivo:
archivo.write("Aprender Python\n")
archivo.write("Practicar funciones\n")

Esto crea o reemplaza notas.txt.

with open("notas.txt", "r", encoding="utf-8") as archivo:
contenido = archivo.read()
print(contenido)

Salida:

Aprender Python
Practicar funciones
with open("notas.txt", "r", encoding="utf-8") as archivo:
for linea in archivo:
print(linea.strip())

strip() elimina saltos de linea y espacios en los extremos.

def guardar_tareas(tareas, ruta):
with open(ruta, "w", encoding="utf-8") as archivo:
for tarea in tareas:
archivo.write(f"{tarea}\n")
def cargar_tareas(ruta):
tareas = []
with open(ruta, "r", encoding="utf-8") as archivo:
for linea in archivo:
tareas.append(linea.strip())
return tareas
guardar_tareas(["leer", "practicar"], "tareas.txt")
print(cargar_tareas("tareas.txt"))

Salida:

['leer', 'practicar']

Retornos: guardar_tareas(...) devuelve None; cargar_tareas(...) devuelve list[str].

Para estructuras como listas y diccionarios, JSON es mas comodo que texto plano.

import json
usuario = {"nombre": "Nora", "puntos": 80}
with open("usuario.json", "w", encoding="utf-8") as archivo:
json.dump(usuario, archivo, indent=2)
with open("usuario.json", "r", encoding="utf-8") as archivo:
usuario_cargado = json.load(archivo)
print(usuario_cargado["puntos"])

Salida:

80

Crea una funcion sumar_numeros_desde_archivo(ruta) que lea un numero por linea y devuelva la suma. Si una linea no es numerica, ignorala.