1. Faro

Nivel 4 · Elige el costo de envío correcto

La solicitud

De Megan Collins, Directora de Ventas

“Nuestra política de envío: las cuentas de empresa siempre envían gratis. Todos los demás pagan $7.95 por debajo de $50, $4.95 desde $50 hasta (sin incluir) $75, y nada desde $75. ¿Cuánto paga este carrito?”

Tu objetivo

Asigna a result el costo de envío (un float) para el subtotal y el segment dados: 0.0 para el segmento 'business'; en otro caso, 7.95 si el subtotal es menor que 50, 4.95 si es al menos 50 y menor que 75, y 0.0 si es 75 o más.

  • 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

    Verdadero y Falso

    Un booleano (bool) tiene solo dos valores: True y False. Los obtienes de las comparaciones:

    62.40 >= 50          # True
    "consumer" == "business"   # False
    operador significado
    == igual a
    != distinto de
    < <= menor que, menor o igual que
    > >= mayor que, mayor o igual que

    Las comparaciones de strings son exactas y distinguen mayúsculas de minúsculas: "Business" == "business" es False. Por eso verás a menudo .lower() antes de una comparación sobre datos escritos por personas.

    Combinar condiciones

    and es verdadero solo cuando ambos lados lo son. or es verdadero cuando al menos un lado lo es. not invierte un valor.

    subtotal = 62.40
    subtotal >= 50 and subtotal < 75    # True
    segment == "business" or subtotal >= 75
    not (subtotal < 50)                 # True

    Python también permite encadenar una comprobación de rango, que se lee como en matemáticas: 50 <= subtotal < 75.

    if, elif, else

    Una sentencia if ejecuta un bloque de código solo cuando su condición es verdadera. El bloque son las líneas con sangría debajo, y la línea anterior termina con dos puntos:

    if subtotal >= 75:
        shipping = 0.0
    elif subtotal >= 50:
        shipping = 4.95
    else:
        shipping = 7.95

    Python revisa las condiciones de arriba abajo y se detiene en la primera verdadera. Por eso la segunda condición puede decir simplemente subtotal >= 50: si el carrito fuera de 75 o más, la primera rama ya se habría ejecutado. elif (else if, «si no, si») puede repetirse tantas veces como necesites, y else recoge todo lo que queda. Ambos son opcionales.

    La sangría no es decoración en Python; define qué líneas pertenecen a la rama. Usa cuatro espacios de forma consistente.

    Ordena tus reglas de la más específica

    Las reglas de negocio suelen tener excepciones («las cuentas de empresa siempre envían gratis»). Pon primero las excepciones; si no, una regla general puede quedarse con el caso antes de llegar a la excepción:

    if segment == "business" or subtotal >= 75:
        shipping = 0.0
    elif subtotal >= 50:
        shipping = 4.95
    else:
        shipping = 7.95

    Cuidado con los límites

    «Desde $50 hasta $75» es donde viven los errores. ¿Los $75 exactos están en el tramo medio o son gratis? La política dice gratis desde $75, así que la comprobación es >= 75, no > 75. Cuando leas una regla, pregunta siempre qué pasa justo en el borde, y prueba un valor exactamente ahí.

    Errores comunes

    • Escribir = en lugar de == en una condición. if segment = "business": es un error de sintaxis.
    • Olvidar los dos puntos al final de las líneas if, elif o else.
    • Equivocar el orden de los tramos, por ejemplo comprobar subtotal >= 50 antes que subtotal >= 75, de modo que un carrito de $120 pague $4.95.
    • Escribir if segment == "business" or "enterprise":. El lado derecho es un string no vacío, que siempre cuenta como verdadero. Repite la comparación: segment == "business" or segment == "enterprise".

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