← Volver al listado
Conectando ejecutor…

PROYECTOS / PYTHON

Explora el proyecto. Resuelve el problema.

Revisa los archivos, corrige su lógica y comprueba tu solución con pruebas.

FácilInventario de Juan
main.py

CONSOLA

Listo para ejecutar
Selecciona un archivo y comienza a explorar.
PROYECTO CONTEXTUALIZADOFácilValidación · Reglas de negocio

Inventario de Juan

Corrige las ventas por unidad sin impedir cantidades fraccionarias en productos por peso.

1. Contexto y Situación

El problema en el entorno real

La tienda de Juan vende manzanas por unidades completas (no fraccionables) y arroz por kilogramos (sí fraccionario). Actualmente el sistema tiene un defecto: permite registrar ventas imposibles como 1.5 manzanas y descuenta existencias erróneas del inventario.

Pregunta a responder:

¿Qué defecto permite registrar cantidades fraccionarias de manzanas y cómo corregirías el proyecto para rechazar esas ventas sin impedir la venta de productos por peso?

2. Qué se tiene

Archivos y estructura recibida

El proyecto cuenta con varios archivos ya configurados:

inventario/ventas.pyPunto de partida

Lógica principal de registrar_venta donde está el defecto a corregir.

inventario/modelos.py

Estructura de Producto (modalidad "unidad" o "peso") y stock inicial.

main.py

Caso de uso demostrativo con 3 llamadas de prueba.

tests/test_publico.py

Pruebas automatizadas (unitarias) que validan el comportamiento.

3. Qué se espera

Reglas y solución esperada
  • Productos tipo "unidad": exigir cantidades estrictamente enteras (ej. 3 o 3.0, rechazando 1.5 con error).
  • Productos tipo "peso": deben seguir admitiendo decimales positivos.
  • Una venta rechazada no debe descontar ni alterar las existencias de stock.
  • Mantener la firma de la función registrar_venta y el formato de los mensajes de salida.
Salida esperada resumida:

Aceptar ventas enteras (3 manzanas -> stock 7), rechazar 1.5 manzanas con "ERROR: la cantidad de manzanas debe ser entera" y mantener el inventario intacto.

Inicia sesión para guardar tu actividad en Progreso y métricas. Al pulsar «Probar» se usan las pruebas públicas originales, aunque hayas editado tests/.