1. Faro

Nivel 2 · ¿Cuántas cajas necesita el almacén?

La solicitud

De Debra Marshall, Gerente de Almacén

“Tenemos un pedido de 23 velas de soja y en cada caja de envío caben 6. ¿Cuántas cajas tengo que sacar? Una caja a medio llenar cuenta como caja.”

Tu objetivo

Asigna a result el número de cajas necesarias como int: en cada caja caben per_box velas y una caja llena solo en parte cuenta como una caja.

  • 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

    Tres tipos de división

    Python tiene tres operadores que tratan con la división, y los analistas usan los tres.

    23 / 6     # 3.8333333333333335  true division, always a float
    23 // 6    # 3                   floor division, whole part only
    23 % 6     # 5                   modulo, the remainder

    / da la respuesta exacta como float. // descarta la parte fraccionaria y redondea hacia abajo al número entero inferior. % (se lee «módulo» o «mod») da lo que sobra después de la división entera. Los dos siempre encajan:

    (23 // 6) * 6 + (23 % 6)   # 18 + 5 = 23

    Dónde se encuentran los analistas con esto

    • Empaquetado y lotes: cuántas paletas completas, cuántas cajas, cuántas páginas de 50 resultados.
    • Conversión de tiempo: 135 // 60 son 2 horas y 135 % 60 son 15 minutos.
    • Cada n-ésima fila: order_id % 10 == 0 elige un pedido de cada diez para una muestra rápida.
    • Pares e impares: n % 2 == 0 es verdadero para los números pares.

    Redondear hacia arriba con math.ceil

    La división entera siempre redondea hacia abajo, lo cual es incorrecto cuando una caja parcial también hay que enviarla. Tienes dos opciones limpias.

    La primera usa el módulo math, que viene con Python. import lo deja disponible, y math.ceil (abreviatura de ceiling, «techo») redondea hacia arriba al siguiente número entero:

    import math
    
    math.ceil(23 / 6)   # 4
    math.ceil(24 / 6)   # 4  exactly 4 boxes, no extra
    math.floor(23 / 6)  # 3

    La segunda usa // y % juntos: toma las cajas completas y añade una caja más si sobra algo. Esa lógica la escribirás tú mismo cuando aprendas if en un nivel posterior.

    math.ceil devuelve un int, que es justo lo que quieres para contar cajas. Compáralo con el round() integrado, que redondea al número más cercano: round(23 / 6) es 4 aquí, pero round(25 / 6) también es 4 cuando necesitas 5 cajas. Redondear al más cercano es la herramienta equivocada para «cuántos contenedores».

    Convertir entre int y float

    A veces necesitas cambiar el tipo de un número a propósito:

    int(3.83)      # 3   cuts off the decimals (towards zero)
    float(4)       # 4.0
    int("23")      # 23  text that looks like a number becomes a number

    int() trunca en lugar de redondear, así que int(3.99) es 3. No lo uses como función de redondeo.

    Errores comunes

    • Usar // cuando la regla de negocio dice que las unidades parciales cuentan. 23 velas en cajas de 6 son 4 cajas, no 3.
    • Usar round() para contar contenedores. Redondea al número más cercano, lo que puede dejar velas en el suelo.
    • Olvidar import math. Sin él, math.ceil falla con NameError: name 'math' is not defined.

    Nota de entrevista

    «¿Qué hace %?» aparece sorprendentemente seguido en las pruebas de selección, normalmente como «encuentra los ID de pedido pares» o «convierte minutos en horas y minutos». Saber que // y % son una pareja cubre ambos casos.

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