Ejercicios Python - Nivel Intermedio (POO) - Parte 1
Ejercicio 1
Crear una clase Persona con atributos nombre y edad. Implementar un método que devuelva si la persona es mayor de edad.Solución
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def es_mayor_de_edad(self):
return self.edad >= 18
Ejemplo de uso
= Persona("Juan", 20)
persona print(persona.es_mayor_de_edad()) # True
Ejercicio 2
Crear una clase Círculo con un atributo radio. Implementar métodos para calcular el área y el perímetro.Solución
import math
class Circulo:
def __init__(self, radio):
self.radio = radio
def area(self):
return math.pi * self.radio ** 2
def perimetro(self):
return 2 * math.pi * self.radio
Ejemplo de uso
= Circulo(5)
circulo print(circulo.area()) # 78.54...
print(circulo.perimetro()) # 31.41...
Ejercicio 3
Crear una clase Rectángulo con atributos base y altura. Implementar un método que determine si es un cuadrado.
Solución
class Rectangulo:
def __init__(self, base, altura):
self.base = base
self.altura = altura
def es_cuadrado(self):
return self.base == self.altura
Ejemplo de uso
= Rectangulo(5, 5)
rectangulo print(rectangulo.es_cuadrado()) # True
Ejercicio 4
Crear una clase Vehículo con atributos marca y modelo. Crear una clase hija Coche con un atributo adicional velocidad_maxima.
Solución
class Vehiculo:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo
class Coche(Vehiculo):
def __init__(self, marca, modelo, velocidad_maxima):
super().__init__(marca, modelo)
self.velocidad_maxima = velocidad_maxima
Ejemplo de uso
= Coche("Toyota", "Corolla", 180)
coche print(coche.marca) # Toyota
print(coche.velocidad_maxima) # 180
Ejercicio 5
Crear una clase CuentaBancaria con métodos para depositar, retirar y consultar el saldo.
Solución
class CuentaBancaria:
def __init__(self, saldo_inicial=0):
self.saldo = saldo_inicial
def depositar(self, cantidad):
self.saldo += cantidad
def retirar(self, cantidad):
if cantidad <= self.saldo:
self.saldo -= cantidad
else:
print("Fondos insuficientes.")
def consultar_saldo(self):
return self.saldo
Ejemplo de uso
= CuentaBancaria(100)
cuenta 50)
cuenta.depositar(30)
cuenta.retirar(print(cuenta.consultar_saldo()) # 120
Ejercicio 6
Crear una clase Empleado con atributos nombre y salario. Implementar un método que calcule el salario anual.
Solución
class Empleado:
def __init__(self, nombre, salario):
self.nombre = nombre
self.salario = salario
def salario_anual(self):
return self.salario * 12
Ejemplo de uso
= Empleado("Ana", 1500)
empleado print(empleado.salario_anual()) # 18000
Ejercicio 7
Crear una clase Animal con un método hablar. Crear subclases como Perro y Gato que implementen el método hablar.
Solución
class Animal:
def hablar(self):
raise NotImplementedError("Este método debe ser implementado por la subclase.")
class Perro(Animal):
def hablar(self):
return "Guau"
class Gato(Animal):
def hablar(self):
return "Miau"
Ejemplo de uso
= Perro()
perro = Gato()
gato print(perro.hablar()) # Guau
print(gato.hablar()) # Miau
Ejercicio 8
Crear una clase Tienda que gestione un inventario. Implementar métodos para agregar, eliminar y mostrar productos.
Solución
class Tienda:
def __init__(self):
self.inventario = {}
def agregar_producto(self, producto, cantidad):
if producto in self.inventario:
self.inventario[producto] += cantidad
else:
self.inventario[producto] = cantidad
def eliminar_producto(self, producto):
if producto in self.inventario:
del self.inventario[producto]
def mostrar_inventario(self):
return self.inventario
Ejemplo de uso
= Tienda()
tienda "Manzanas", 10)
tienda.agregar_producto("Peras", 5)
tienda.agregar_producto("Peras")
tienda.eliminar_producto(print(tienda.mostrar_inventario()) # {'Manzanas': 10}
Ejercicio 9
Crear una clase Fracción con atributos numerador y denominador. Implementar un método para sumar dos fracciones.
Solución
class Fraccion:
def __init__(self, numerador, denominador):
self.numerador = numerador
self.denominador = denominador
def sumar(self, otra):
= self.numerador * otra.denominador + otra.numerador * self.denominador
nuevo_num = self.denominador * otra.denominador
nuevo_den return Fraccion(nuevo_num, nuevo_den)
def __str__(self):
return f"{self.numerador}/{self.denominador}"
Ejemplo de uso
= Fraccion(1, 2)
f1 = Fraccion(1, 3)
f2 = f1.sumar(f2)
resultado print(resultado) # 5/6
Ejercicio 10
Crear una clase Libro que contenga un atributo autores como una lista. Implementar un método para agregar y listar los autores.
Solución
class Libro:
def __init__(self, titulo):
self.titulo = titulo
self.autores = []
def agregar_autor(self, autor):
self.autores.append(autor)
def listar_autores(self):
return self.autores
Ejemplo de uso
= Libro("Python Intermedio")
libro "Autor 1")
libro.agregar_autor("Autor 2")
libro.agregar_autor(print(libro.listar_autores()) # ['Autor 1', 'Autor 2']