La solicitud

De Angela Rivera, Directora de Atención al Cliente
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
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Angela, y por qué
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
discountedantes 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.
¡Linterna encendida!
Practicaste: debuggingcomparisonboundariesif elif else
- Resuelto
- Sin pistas
- Al primer intento
