La solicitud

De Debra Marshall, Gerente de Almacén
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
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 Debra, y por qué
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 // 60son 2 horas y135 % 60son 15 minutos. - Cada n-ésima fila:
order_id % 10 == 0elige un pedido de cada diez para una muestra rápida. - Pares e impares:
n % 2 == 0es 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.ceilfalla conNameError: 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.
¡Linterna encendida!
Practicaste: floor divisionmodulomath ceilint
- Resuelto
- Sin pistas
- Al primer intento
