1. Faro

Nivel 2 · Suma un carrito con un bucle

La solicitud

De Jennifer Castillo, Líder del Equipo de Soporte

“Nuestra consulta de pedidos muestra las cantidades y los precios en dos columnas separadas. ¿Puedes sumarme este carrito? Cada cantidad coincide con el precio que está en la misma posición.”

Tu objetivo

Asigna a result el total del carrito como float: la suma de cantidad por precio para cada posición de quantities y prices, redondeada a 2 decimales.

  • 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

    Repetir trabajo con for

    Un bucle for ejecuta el mismo bloque de código una vez por cada elemento de una lista:

    prices = [49.99, 129.00, 12.50]
    for price in prices:
        print(price)

    En cada pasada, la variable del bucle (price) contiene el siguiente elemento. Las líneas con sangría son el cuerpo del bucle. Cuando la lista se acaba, el bucle termina y Python continúa con la primera línea sin sangría.

    El patrón del acumulador

    El bucle más común en el código de análisis suma cosas. Creas una variable antes del bucle y la actualizas en cada pasada:

    total = 0
    for price in prices:
        total += price      # same as total = total + price

    Después del bucle, total vale 191.49. El mismo patrón cuenta cosas (count += 1), encuentra el valor más grande hasta el momento o construye una lista nueva con append.

    Recorrer dos listas a la vez

    Aquí las cantidades y los precios están en listas separadas que coinciden por posición. zip las empareja:

    quantities = [2, 1, 4]
    prices = [49.99, 129.00, 12.50]
    
    list(zip(quantities, prices))
    # [(2, 49.99), (1, 129.0), (4, 12.5)]

    Puedes desempaquetar cada pareja directamente en dos variables del bucle:

    total = 0
    for qty, price in zip(quantities, prices):
        total += qty * price

    Se lee casi como en español: para cada cantidad y precio, suma el total de la línea. Si las listas tienen longitudes distintas, zip se detiene en la más corta sin dar error, así que asegúrate de que tus datos coincidan antes de fiarte del resultado.

    Cuando necesitas la posición

    enumerate te da el índice junto a cada elemento, lo que ayuda cuando quieres etiquetar líneas:

    for i, price in enumerate(prices, start=1):
        print(f"Line {i}: ${price:.2f}")

    Evita el estilo antiguo for i in range(len(prices)): con prices[i] dentro. Funciona, pero zip y enumerate son más claros y es más difícil equivocarse con ellos.

    No olvides las funciones integradas

    Cuando solo necesitas la suma simple de una lista, sum(prices) es más sencillo que un bucle. Los bucles se ganan su sitio cuando cada paso hace algo de trabajo primero, como multiplicar por una cantidad o saltarse filas erróneas.

    Errores comunes

    • Poner total = 0 dentro del bucle. Se reinicia en cada pasada, así que acabas con solo la última línea.
    • Olvidar la sangría del cuerpo. Python lanza IndentationError o, peor aún, ejecuta la línea una vez cuando el bucle ya terminó.
    • Redondear dentro del bucle. Redondea el total final una sola vez.

    Una mirada hacia delante

    En pandas rara vez escribirás este bucle: (df["quantity"] * df["unit_price"]).sum() hace lo mismo para una columna entera de una vez, y mucho más rápido. Pero saber qué hace esa línea por dentro la hace mucho más fácil de depurar.

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