jueves, 16 de julio de 2026

Día 17 — Manejo de errores con try / except

 Los errores en tiempo de ejecución son inevitables en cualquier programa real: un usuario introduce datos inesperados, un archivo no existe, una conexión falla. Python ofrece el bloque try / except para capturar estos errores y manejarlos de forma controlada en lugar de dejar que el programa se detenga abruptamente.

El bloque try contiene el código que puede fallar, y except especifica qué hacer si ocurre un tipo concreto de error. El bloque opcional finally se ejecuta siempre, haya error o no, y suele usarse para tareas de limpieza como cerrar archivos o conexiones.

def dividir(a, b): try: resultado = a / b return resultado except ZeroDivisionError: return "Error: no se puede dividir por cero" except TypeError: return "Error: introduce solo números" finally: print("Operación completada") print(dividir(10, 2)) # 5.0 print(dividir(10, 0)) # Error: no se puede dividir por cero




miércoles, 15 de julio de 2026

Día 16 — Herencia: reutilizando y extendiendo clases

La herencia permite crear una nueva clase a partir de otra ya existente, heredando automáticamente todos sus atributos y métodos. La clase que hereda se llama "clase hija", y la original "clase padre". Esto evita duplicar código cuando varias clases comparten comportamiento común.

Además, la clase hija puede sobreescribir cualquier método heredado para darle un comportamiento distinto, una técnica conocida como polimorfismo. Este concepto es la base de frameworks tan populares como Django, donde casi todo se construye a partir de clases que heredan funcionalidad predefinida.

Código de ejemplo:

class Animal: def __init__(self, nombre): self.nombre = nombre def hablar(self): return "..." class Perro(Animal): def hablar(self): return f"{self.nombre} dice: ¡Guau!" class Gato(Animal): def hablar(self): return f"{self.nombre} dice: ¡Miau!" rex = Perro("Rex") print(rex.hablar()) # Rex dice: ¡Guau!




martes, 14 de julio de 2026

Día 15 — Clases: introducción a la programación orientada a objetos

La programación orientada a objetos (POO) es un paradigma que modela el código a partir de "objetos" que combinan datos y comportamiento, de forma similar a como funcionan los elementos del mundo real. Una clase actúa como el molde o plantilla, y un objeto es cada instancia concreta creada a partir de ese molde.

El método __init__ es el constructor: se ejecuta automáticamente cada vez que se crea un nuevo objeto, y normalmente se usa para inicializar sus atributos. El parámetro self hace referencia al propio objeto dentro de cualquier método de la clase, y siempre debe aparecer como primer parámetro.

Código de ejemplo:

class Persona: def __init__(self, nombre, edad): self.nombre = nombre self.edad = edad def presentarse(self): return f"Soy {self.nombre} y tengo {self.edad} años" jose = Persona("José", 35) print(jose.presentarse()) print(jose.nombre) # Acceso directo al atributo