Last active
October 30, 2024 17:27
-
-
Save hcosta/ff9b771ce7edaf1bb4d919675e109d13 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Producto: | |
def __init__(self, nombre, descripcion, precio): | |
self.nombre = nombre | |
self.descripcion = descripcion | |
self.precio = precio | |
class Subproducto(Producto): | |
def __init__(self, nombre, descripcion, precio, marca): | |
super().__init__(nombre, descripcion, precio) | |
self.marca = marca | |
# Crear una lista de productos de prueba | |
productos = [ | |
Producto('Camisa', 'Camisa de algodón', 20.0), | |
Producto('Pantalón', 'Pantalón de mezclilla', 30.0), | |
Subproducto('Zapatillas', 'Zapatillas deportivas', 50.0, 'Nike') | |
] | |
# Funciones CRUD | |
def crear_producto(nombre, descripcion, precio, marca=None): | |
if marca: | |
producto = Subproducto(nombre, descripcion, precio, marca) | |
else: | |
producto = Producto(nombre, descripcion, precio) | |
productos.append(producto) | |
def leer_producto(nombre): | |
for producto in productos: | |
if producto.nombre == nombre: | |
return producto | |
return None | |
def actualizar_producto(nombre, descripcion=None, precio=None, marca=None): | |
producto = leer_producto(nombre) | |
if producto: | |
if descripcion: | |
producto.descripcion = descripcion | |
if precio: | |
producto.precio = precio | |
if marca: | |
producto.marca = marca | |
else: | |
raise ValueError("Producto no encontrado") | |
def borrar_producto(nombre): | |
producto = leer_producto(nombre) | |
if producto: | |
productos.remove(producto) | |
else: | |
raise ValueError("Producto no encontrado") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Yo le indique que me ordenara el código y que me muestre los productos por pantalla, porque me equivoque ordenando mientras te seguia en el curso, y esto fue lo que me dió:
class Producto:
def init(self, nombre, descripcion, precio):
self.nombre = nombre
self.descripcion = descripcion
self.precio = precio
class Subproducto(Producto):
def init(self, nombre, descripcion, precio, marca):
super().init(nombre, descripcion, precio)
self.marca = marca
Crear un diccionario de productos de prueba
productos = {
'Camisa': Producto('Camisa', 'Camisa de algodón', 20.0),
'Pantalón': Producto('Pantalón', 'Pantalón de mezclilla', 30.0),
'Zapatillas': Subproducto('Zapatillas', 'Zapatillas deportivas', 50.0, 'Nike')
}
Funciones CRUD
def crear_producto(nombre, descripcion, precio, marca=None):
if nombre in productos:
raise ValueError("El producto ya existe")
if marca:
producto = Subproducto(nombre, descripcion, precio, marca)
else:
producto = Producto(nombre, descripcion, precio)
productos[nombre] = producto
def leer_producto(nombre):
return productos.get(nombre)
def actualizar_producto(nombre, **kwargs):
producto = leer_producto(nombre)
if not producto:
raise ValueError("Producto no encontrado")
for key, value in kwargs.items():
if hasattr(producto, key):
setattr(producto, key, value)
else:
raise ValueError(f"El producto no tiene el atributo {key}")
def borrar_producto(nombre):
if nombre not in productos:
raise ValueError("Producto no encontrado")
del productos[nombre]
def mostrar_productos():
for producto in productos.values():
print(f"{producto.nombre}: {producto.descripcion} ({producto.precio} €)")
if name == "main":
mostrar_productos() # Mostrar los productos al iniciar el programa