1. Faro

Nivel 8 · Depuración: cobraron envío con exactamente $75

La solicitud

De Angela Rivera, Directora de Atención al Cliente

“Una clienta usó un cupón del 25% en un carrito de $100, pagó $75 por los productos y aun así le cobramos $6.95 de envío. Nuestra web promete envío gratis desde $75. ¿Puedes encontrar qué falla en el script de la compra?”

Tu objetivo

Corrige el código para que result sea el total del pedido (un float redondeado a 2): el subtotal con descuento más el envío. El envío es 0.0 para cuentas de empresa o cuando el subtotal con descuento es $75 o más; en otro caso, 6.95.

  • Guarda un número en resultpendiente

Tu código

Python

Cargando el editor…

    ResultadoPresiona Ejecutar para ver el tuyo

    Mote revisa tu resultado

    Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

    La lección

    Encuentra el caso que falló

    Empieza por la queja, no por el código. El carrito es 2 × $32.50 + $35.00 = $100.00, y un cupón del 25% deja a la clienta pagando 100 * (1 - 25 / 100), que es exactamente 75.0. La promesa de la web es envío gratis «desde $75», así que este carrito está justo en el límite.

    discounted = 100.0 * (1 - 25 / 100)   # 75.0
    discounted > 75     # False  -> she pays 6.95
    discounted >= 75    # True   -> free shipping

    > significa estrictamente mayor. Cuando ambos lados son iguales da False, así que el script cayó en la rama else y cobró $6.95. El total quedó en $81.95 en lugar de $75.00.

    Traduce las palabras al operador

    Las reglas de negocio usan palabras cotidianas, y cada una se corresponde con una comparación concreta:

    • «desde $75», «$75 o más», «al menos $75»: >= 75
    • «por encima de $75», «más de $75»: > 75
    • «por debajo de $50», «menos de $50»: < 50
    • «hasta $50», «$50 o menos»: <= 50

    Antes de escribir una condición, subraya las palabras de la política y elige el operador de esa lista. La mayoría de los errores de límite vienen de escribir > por costumbre.

    Prueba los bordes

    Un buen hábito para cualquier regla con un umbral es probar tres valores: uno justo por debajo, uno exactamente en el borde y uno justo por encima. Para esta política serían $74.99, $75.00 y $75.01. Solo el primero debería pagar envío. El script con error cobra envío en los dos primeros, y solo lo detectarías con el valor exactamente en el borde, por eso los carritos de prueba normales no lo revelaron.

    Fíjate también en que la comprobación usa el subtotal con descuento. El orden de las operaciones también importa en sentido de negocio: primero se aplica el cupón y después la regla de envío mira lo que queda.

    Errores comunes

    • Comparar el subtotal original ($100) con 75. Eso daría envío gratis a un carrito de $90 con un cupón del 25%, que solo cuesta $67.50.
    • Cambiar el número del umbral en lugar del operador, por ejemplo > 74.99.
    • Redondear discounted antes de la comparación y sorprenderse con un float como 74.99999. Aquí el valor es exactamente 75.0, pero si un cálculo produce decimales largos, redondea primero a centavos y luego compara.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.