- 1 1. Introducción
- 2 2. División en Python: El operador/básico
- 3 3. División de piso en Python (división de truncado e integerización)
- 4 4. División por techo en Python (math.ceil())
- 5 5. Método para obtener simultáneamente la división y el resto
- 6 6. Preguntas frecuentes sobre la división en Python (FAQ)
- 6.1 6-1. ¿Cómo convertir el resultado de una división a entero en Python?
- 6.2 6-2. ¿Cuál es la diferencia entre truncar y redondear?
- 6.3 6-3. ¿Cuál es la diferencia entre int() y math.floor()?
- 6.4 6-4. ¿Cuáles son los puntos de atención al truncar números negativos?
- 6.5 6-5. ¿Cómo redondear especificando el número de decimales?
- 6.6 6-6. ¿Qué pasa al dividir por cero?
- 6.7 6-7. ¿Cuáles son las ventajas de divmod()?
- 6.8 6-8. ¿Cómo realizar cálculos precisos con punto flotante en Python?
- 6.9 6-9. ¿Cómo formatear el resultado de una división como cadena?
- 7 7. Resumen
1. Introducción
1-1. Los fundamentos de la división en Python
En Python, hay varias formas de realizar divisiones. Principalmente hay tres tipos, y cada uno tiene un formato de resultado y usos diferentes.
- División normal (
/
)
- El resultado es un número de punto flotante (
float
) - Ejemplo:
10 / 3
→3.3333333333333335
- División de truncamiento (división de piso
//
)
- Se obtiene un resultado entero truncando la parte decimal
- Ejemplo:
10 // 3
→3
- División para obtener el resto (
%
)
- Permite calcular el resto de la división
- Ejemplo:
10 % 3
→1
Es importante entender estas operaciones y usarlas de manera adecuada en el procesamiento numérico en Python.
1-2. Cómo convertir el resultado de la división en un entero
1-2-1. Usar //
(división de piso)
La división de piso (//
) trunca la parte decimal y obtiene solo la parte entera.
print(10 // 3) # Salida: 3
print(-10 // 3) # Salida: -4 (truncamiento hacia la dirección negativa)
1-2-2. Usar int()
También hay un método para convertir explícitamente el resultado de la división normal (/
) en un entero usando int()
.
print(int(10 / 3)) # Salida: 3
Sin embargo, int()
trunca la parte decimal, por lo que es necesario tener cuidado al manejar números negativos.
1-3. Diferencia entre truncamiento y redondeo
Al convertir el resultado de la división en un entero, también es importante entender la diferencia entre «truncamiento» y «redondeo».
- Truncamiento: Eliminar incondicionalmente la parte decimal (ejemplo:
3.9
→3
) - Redondeo: Redondear considerando la parte decimal (ejemplo:
3.5
→4
)
En Python, se puede realizar el redondeo usando round()
.
print(round(3.5)) # Salida: 4
print(round(3.4)) # Salida: 3
1-4. Lo que se puede aprender en este artículo
En este artículo, se explican los conceptos básicos de la división en Python, enfocándose especialmente en la «división de truncamiento». En las secciones siguientes, se profundizará en conocimientos prácticos con ejemplos de código específicos y puntos de atención.
2. División en Python: El operador/
básico
2-1. Básico del operador/
(barra)
En Python, al usar /
, el resultado es siempre un número de punto flotante (float
). Esto es lo mismo incluso para la división entre enteros.
Ejemplo: División normal
print(10 / 3) # Salida: 3.3333333333333335
print(8 / 2) # Salida: 4.0
print(5 / 2) # Salida: 2.5
De esta manera, el resultado del cálculo es de tipo float
y conserva los valores después del punto decimal, lo cual es una característica.
2-2. Diferencia entre el tipo int
y el tipo float
Al usar el operador /
en Python, incluso si la entrada es de tipo int
, el resultado será de tipo float
.
Ejemplo: Cálculo que incluye enteros
a = 10
b = 2
c = a / b
print(c) # Salida: 5.0
print(type(c)) # Salida: <class 'float'="">
En este código, a
y b
son enteros (int
), pero el resultado de a / b
es 5.0
de tipo float
.
2-3. Método de manejo cuando se necesita un resultado entero
2-3-1. Usar //
(división de piso)
Al usar //
, se obtiene un resultado entero con la parte decimal truncada.
print(10 // 3) # Salida: 3
print(8 // 2) # Salida: 4
2-3-2. Usar int()
para convertir explícitamente a entero
Después de usar la división normal /
, al aplicar int()
, se obtiene un entero con la parte decimal truncada.
print(int(10 / 3)) # Salida: 3
Sin embargo, es necesario tener cuidado con el manejo de números negativos.
2-4. Puntos de atención en los cálculos con /
2-4-1. Dividir por 0
causa un error
En Python, la división por cero resulta en un ZeroDivisionError
y el programa se detiene.
print(10 / 0) # ZeroDivisionError: division by zero
Medida:
Para evitar la división por cero, es común verificar previamente con una sentencia if
.
a, b = 10, 0
if b != 0:
print(a / b)
else:
print("No se puede dividir por cero")
2-4-2. Cálculo con números negativos
Al dividir números negativos con /
, se devuelve un resultado de tipo float
siguiendo las reglas matemáticas normales.
print(-10 / 3) # Salida: -3.3333333333333335
print(10 / -3) # Salida: -3.3333333333333335
En los cálculos con números negativos, es necesario realizar el truncado o redondeo de manera adecuada.
2-5. Usos del operador /
y resumen
- Al usar
/
, el resultado es siempre de tipofloat
- Si se desea un resultado entero, usar
//
oint()
- La división por
0
causa un error, por lo que es necesario procesarlo adecuadamente - Tener cuidado con los resultados de cálculos con números negativos
3. División de piso en Python (división de truncado e integerización)
3-1. //
(división de piso) básica
Usando //
, se puede obtener el resultado de la división como un entero truncando los decimales.
Ejemplo: División de piso
print(10 // 3) # Salida: 3
print(8 // 2) # Salida: 4
print(5 // 2) # Salida: 2
A diferencia del operador /
(barra diagonal) normal, usar //
resulta en un entero (int
).
print(10 / 3) # Salida: 3.3333333333333335
print(10 // 3) # Salida: 3
De esta manera, //
ignora los decimales y devuelve solo la parte entera.
3-2. Diferencia con int()
Es posible usar int()
en lugar de //
para convertir a entero, pero hay diferencias entre ellos.
Caso de uso de int()
Se puede obtener un resultado decimal usando la /
normal y aplicar int()
para convertirlo a entero.
print(int(10 / 3)) # Salida: 3
Diferencia con //
int()
simplemente trunca los decimales, pero como se convierte a tipo float
durante el cálculo, //
es más eficiente en términos de velocidad de procesamiento.
print(type(10 // 3)) # Salida: <class 'int'="">
print(type(int(10 / 3))) # Salida: <class 'int'="">
A simple vista parecen iguales, pero int()
convierte el resultado de /
a float
una vez antes de integerizarlo, por lo que es más apropiado usar directamente //
.
3-3. Precaución con el truncado de números negativos (comportamiento de -10 // 3
)
Al calcular números negativos con //
, el resultado sigue el comportamiento de la «función de piso (truncado hacia abajo)» matemática, por lo que se pueden obtener resultados no intuitivos.
Ejemplo: División de piso de números negativos
print(-10 // 3) # Salida: -4
En un cálculo matemático normal, -10 ÷ 3 = -3.333...
, por lo que parecería que sería -3
, pero el //
de Python siempre trunca hacia el valor más pequeño, por lo que resulta en -4
.
Comparación entre números positivos y negativos
print(10 // 3) # Salida: 3
print(-10 // 3) # Salida: -4
Esto se debe a que realiza la acción de «truncar (floor) el resultado de la división», por lo que es necesario tener precaución al manejar números negativos.
3-4. Diferencia con math.floor()
Python tiene una función llamada math.floor()
, que también se puede usar para truncar los decimales.
Básicos de math.floor()
import math
print(math.floor(10 / 3)) # Salida: 3
print(math.floor(-10 / 3)) # Salida: -4
math.floor()
realiza la acción de truncar hacia abajo los decimales de la misma manera que //
, pero difiere en que el valor de retorno es de tipo float
.
print(type(10 // 3)) # Salida: <class 'int'="">
print(type(math.floor(10 / 3))) # Salida: <class 'float'="">
Es importante entender esta diferencia y seleccionar el método apropiado.
3-5. Usos del operador //
y resumen
Usar la //
(división de piso) de Python permite obtener un valor entero truncando los decimales. Es especialmente útil en los siguientes casos.
- Caso en que solo se necesita el resultado entero
- Ejemplo: Al calcular el «número total de páginas» en paginación
items = 45
per_page = 10
total_pages = (items + per_page - 1) // per_page
print(total_pages) # Salida: 5
- Caso en que se necesita precaución con el procesamiento de números negativos
- Como
//
siempre redondea hacia el valor más pequeño, verificar previamente si el resultado es el esperado al procesar números negativos. - Caso en que se desea procesar cálculos innecesarios de decimales de manera rápida
int(10 / 3)
es más lento que10 // 3
.

4. División por techo en Python (math.ceil()
)
4-1. Lo básico de math.ceil()
El math.ceil()
de Python es una función que redondea incondicionalmente hacia arriba los decimales y devuelve un entero. Esta función está incluida en el módulo math
, por lo que es necesario realizar import math
al usarla.
Ejemplo: Cómo usar math.ceil()
import math
print(math.ceil(10 / 3)) # Salida: 4
print(math.ceil(5 / 2)) # Salida: 3
print(math.ceil(4.2)) # Salida: 5
De esta manera, math.ceil()
redondea todo lo decimal hacia arriba para convertirlo en un entero.
4-2. Diferencias entre math.ceil()
y //
(división por piso)
Dado que el procesamiento de redondeo hacia arriba y el de redondeo hacia abajo son operaciones opuestas, es importante entender las diferencias entre ambos.
División por piso (//
)
print(10 // 3) # Salida: 3
print(-10 // 3) # Salida: -4
//
descarta los decimales (en números negativos, hacia la dirección más pequeña)- Es necesario prestar atención a los resultados de cálculo con números negativos
Redondeo hacia arriba (math.ceil()
)
import math
print(math.ceil(10 / 3)) # Salida: 4
print(math.ceil(-10 / 3)) # Salida: -3
math.ceil()
redondea hacia arriba los decimales- En el caso de números negativos, se redondea hacia la dirección más grande
4-3. Ejemplos prácticos usando math.ceil()
4-3-1. Cálculo del número de páginas
Por ejemplo, al dividir datos por páginas, considerando el número de ítems por página, incluso si hay un resto, es necesario redondear hacia arriba el número de páginas.
import math
items = 45 # Número total de ítems
per_page = 10 # Número de ítems por página
total_pages = math.ceil(items / per_page)
print(total_pages) # Salida: 5
4-3-2. Cálculo del número de veces necesarias para la tarea
Por ejemplo, supongamos que 100 tareas son procesadas por 5 personas. Al calcular el número de veces que una persona debe procesar, si hay un resto, es necesario procesar una vez más.
import math
tasks = 100 # Número total de tareas
workers = 6 # Número de trabajadores
tasks_per_worker = math.ceil(tasks / workers)
print(tasks_per_worker) # Salida: 17
4-4. Cómo realizar el redondeo hacia arriba sin usar math.ceil()
También hay un método para redondear hacia arriba con división de enteros sin usar math.ceil()
. Eso es la siguiente «operación de enteros utilizando suma y resta«.
Usar (a + b – 1) // b
Este método obtiene el efecto de redondeo hacia arriba sumando (b - 1)
al número a dividir a
y dividiendo por b
.
def ceil_div(a, b):
return (a + b - 1) // b
print(ceil_div(10, 3)) # Salida: 4
print(ceil_div(5, 2)) # Salida: 3
4-5. Usos y resumen de math.ceil()
El math.ceil()
de Python es útil cuando se necesita obtener un entero redondeando hacia arriba los decimales. Es especialmente efectivo en situaciones como las siguientes.
- Al calcular el número de páginas o grupos
import math
items = 45
per_page = 10
total_pages = math.ceil(items / per_page)
print(total_pages) # Salida: 5
- Aun si hay un resto, cuando se quiere aumentar el número de procesamientos
import math
tasks = 100
workers = 6
tasks_per_worker = math.ceil(tasks / workers)
print(tasks_per_worker) # Salida: 17
- Cuando se quiere realizar división por techo solo con enteros
def ceil_div(a, b):
return (a + b - 1) // b
print(ceil_div(10, 3)) # Salida: 4
5. Método para obtener simultáneamente la división y el resto
5-1. %
(operador módulo) para el cálculo del resto
El método básico para obtener el resto en Python es usar %
(operador módulo).
Ejemplo: Cálculo del resto
print(10 % 3) # Salida: 1
print(20 % 7) # Salida: 6
a % b
devuelve el resto de dividir a
por b
. Por ejemplo, en 10 % 3
, 10 ÷ 3 = 3 ... 1
, por lo que el resto 1
se muestra.
Precaución con el resto de números negativos
El operador %
de Python se ve afectado por el signo del número que se divide (dividendo), por lo que es necesario tener cuidado al manejar números negativos.
print(-10 % 3) # Salida: 2
print(10 % -3) # Salida: -2
Esto se debe a que el operador %
de Python sigue la regla de «devolver un resto con el mismo signo que el número divisor«.
5-2. Obtener simultáneamente el cociente y el resto usando divmod()
Usando la función divmod()
de Python, es posible obtener el cociente y el resto simultáneamente en un solo cálculo.
divmod()
básico
quotient, remainder = divmod(10, 3)
print(quotient) # Salida: 3
print(remainder) # Salida: 1
En este código, divmod(10, 3)
devuelve la tupla (3, 1)
, que se divide en quotient
(cociente) y remainder
(resto).
Caso que incluye números negativos
divmod()
también funciona siguiendo las reglas de Python, al igual que el operador %
.
print(divmod(-10, 3)) # Salida: (-4, 2)
print(divmod(10, -3)) # Salida: (-4, -2)
De esta manera, el cociente actúa igual que //
, y el resto es el mismo resultado que %
.
5-3. Comparación con el uso individual de //
y %
divmod(a, b)
calcula simultáneamente a // b
y a % b
, pero verifiquemos las diferencias con el método de usar //
y %
por separado.
Método que realiza dos cálculos
a = 10
b = 3
quotient = a // b
remainder = a % b
print(quotient) # Salida: 3
print(remainder) # Salida: 1
Con este método también se puede obtener el cociente y el resto, pero requiere dos cálculos.
Método que usa divmod()
quotient, remainder = divmod(10, 3)
print(quotient) # Salida: 3
print(remainder) # Salida: 1
Con este método, se obtienen ambos valores con una sola llamada a la función, por lo que el número de cálculos es menor y es más eficiente.
5-4. Ejemplos prácticos de divmod()
5-4-1. Conversión a horas y minutos
Por ejemplo, para dividir un total de 145
minutos en «horas» y «minutos», se puede calcular fácilmente usando divmod()
.
minutes = 145
hours, remainder_minutes = divmod(minutes, 60)
print(f"{hours} horas {remainder_minutes} minutos") # Salida: 2 horas 25 minutos
5-4-2. Cálculo de monedas
Al aprovechar divmod()
, también se puede calcular fácilmente la división de un monto en combinaciones de monedas específicas.
amount = 758 # 758 yenes
yen_100, remainder = divmod(amount, 100) # Número de monedas de 100 yenes
yen_50, remainder = divmod(remainder, 50) # Número de monedas de 50 yenes
yen_10, remainder = divmod(remainder, 10) # Número de monedas de 10 yenes
print(f"100 yenes: {yen_100} monedas, 50 yenes: {yen_50} monedas, 10 yenes: {yen_10} monedas, resto: {remainder} yenes")
5-5. Resumen de métodos de cálculo de división y resto
En Python, es importante elegir el método de cálculo de cociente y resto según el uso.
Método | Uso | Cociente | Resto |
---|---|---|---|
// | a // b | ○ | × |
% | a % b | × | ○ |
divmod() | divmod(a, b) | ○ | ○ |
En particular, divmod()
permite obtener simultáneamente el cociente y el resto, reduciendo los cálculos repetitivos y permitiendo escribir código más eficiente.
6. Preguntas frecuentes sobre la división en Python (FAQ)
6-1. ¿Cómo convertir el resultado de una división a entero en Python?
En Python, hay principalmente tres métodos para convertir el resultado de una división a entero.
① //
(división de piso) usar
Al usar //
, se obtiene un resultado entero truncando la parte decimal.
print(10 // 3) # Salida: 3
print(-10 // 3) # Salida: -4
② int()
usar
Es posible convertir explícitamente el resultado de la división normal (/
) a entero usando int()
.
print(int(10 / 3)) # Salida: 3
Sin embargo, int()
trunca la parte decimal, por lo que en números negativos puede diferir del comportamiento de //
.
③ math.floor()
usar
Usando la función math.floor()
de Python, se puede convertir a entero siempre redondeando hacia abajo.
import math
print(math.floor(10 / 3)) # Salida: 3
print(math.floor(-10 / 3)) # Salida: -4
6-2. ¿Cuál es la diferencia entre truncar y redondear?
- Truncado (división de piso): usar
//
omath.floor()
- Redondeo: usar
round()
Ejemplo: Redondeo
print(round(3.5)) # Salida: 4
print(round(3.4)) # Salida: 3
La función round()
de Python sigue la regla de redondeo bancario (redondeo a par), por lo que round(2.5)
es 2
y round(3.5)
es 4
.
6-3. ¿Cuál es la diferencia entre int()
y math.floor()
?
Método | Comportamiento | Procesamiento de números negativos | Tipo de valor de retorno |
---|---|---|---|
int() | Trunca la parte decimal | int(-3.9) → -3 | int |
math.floor() | Siempre redondea hacia abajo | math.floor(-3.9) → -4 | float |
Debido a que el procesamiento de números negativos difiere, es importante entender la diferencia entre int()
y math.floor()
y usar el apropiado en cada situación.
6-4. ¿Cuáles son los puntos de atención al truncar números negativos?
La //
(división de piso) de Python tiene la especificación de truncar hacia el negativo.
print(-10 // 3) # Salida: -4
Esto sigue el comportamiento de la función matemática «floor», por lo que se necesita precaución al truncar números negativos.
6-5. ¿Cómo redondear especificando el número de decimales?
Usando round()
de Python, se puede redondear especificando el número de decimales.
print(round(3.14159, 2)) # Salida: 3.14
print(round(3.14159, 3)) # Salida: 3.142
6-6. ¿Qué pasa al dividir por cero?
En Python, al dividir por cero se produce un error ZeroDivisionError
.
print(10 / 0) # ZeroDivisionError: division by zero
Para evitar este error, es necesario verificar previamente si es cero.
a, b = 10, 0
if b != 0:
print(a / b)
else:
print("No se puede dividir por cero")
6-7. ¿Cuáles son las ventajas de divmod()
?
Usando la función divmod()
de Python, se puede obtener el cociente y el resto simultáneamente, lo que reduce el número de cálculos y permite escribir código eficiente.
quotient, remainder = divmod(10, 3)
print(quotient) # Salida: 3
print(remainder) # Salida: 1
6-8. ¿Cómo realizar cálculos precisos con punto flotante en Python?
Dado que los números de punto flotante en Python pueden tener errores de redondeo, para casos que requieren precisión, es recomendable usar el módulo decimal
.
from decimal import Decimal
a = Decimal('10.1')
b = Decimal('3.3')
print(a / b) # Cálculo preciso posible
6-9. ¿Cómo formatear el resultado de una división como cadena?
Si se desea formatear el resultado de una división como cadena, se puede usar f-string
o format()
.
result = 10 / 3
print(f"{result:.2f}") # Salida: 3.33
print("{:.2f}".format(result)) # Salida: 3.33
7. Resumen
7-1. Cómo elegir el método óptimo según la situación
En la división de Python hay varios métodos, y es importante elegir la técnica óptima según la situación.
Situación | Método recomendado | Explicación |
---|---|---|
Quiero realizar cálculos precisos que incluyan decimales | / | División normal (punto flotante) |
Quiero un resultado entero (truncado) | // | División de piso (obtener resultado como entero) |
Quiero un resultado entero (truncar decimales) | int() | float a int (prestar atención a números negativos) |
Quiero redondear hacia arriba | math.ceil() | math.ceil() para redondear hacia arriba |
Quiero obtener el resto | % | Obtener solo el resto |
Quiero obtener el cociente y el resto al mismo tiempo | divmod() | Obtener cociente y resto de una vez |
Quiero evitar errores de punto flotante | decimal.Decimal | Cálculos de alta precisión |
7-2. Precauciones al manejar divisiones
Al realizar divisiones en Python, es necesario prestar atención a varios puntos importantes.
1. //
(división de piso) se comporta de manera diferente con números negativos
//
(división de piso) redondea hacia el valor más pequeño, por lo que al manejar números negativos, puede dar resultados diferentes a los intuitivos.
print(-10 // 3) # Salida: -4
Entendiendo este comportamiento, en algunos casos es apropiado usar math.floor()
.
2. La división por cero genera un error
En Python, al intentar dividir por cero, se produce un ZeroDivisionError
, por lo que es necesario verificar previamente.
a, b = 10, 0
if b != 0:
print(a / b)
else:
print("No se puede dividir por cero")
3. round()
realiza redondeo a par
El round()
de Python sigue la regla de redondeo bancario (redondeo a par), por lo que round(2.5)
da 2
y round(3.5)
da 4
.
print(round(2.5)) # Salida: 2
print(round(3.5)) # Salida: 4
4. divmod()
puede eficientar los cálculos
En lugar de calcular el cociente y el resto por separado, usar divmod()
reduce el número de cálculos, permitiendo escribir código más eficiente.
quotient, remainder = divmod(10, 3)
print(quotient) # Salida: 3
print(remainder) # Salida: 1
7-3. Resumen del artículo
En la división de Python hay muchos métodos, cada uno con usos diferentes. Reorganizando el contenido explicado en este artículo, queda como sigue.
- División normal (
/
) devuelve un resultado de tipofloat
. - Si se quiere un resultado entero, usar
//
(división de piso). - Al manejar números negativos, prestar atención al comportamiento de
//
(se trunca hacia el negativo). - Para redondear, usar
round()
. - Para redondear hacia arriba, usar
math.ceil()
; para truncar, usarmath.floor()
. - Para obtener el resto, usar
%
; para obtener cociente y resto al mismo tiempo, usardivmod()
. - Si se necesita alta precisión, usar
decimal.Decimal
.
Si se domina adecuadamente la división en Python, se podrá realizar el procesamiento de datos y cálculos de manera más flexible y precisa.
Con esto concluye el artículo. ¿Ha profundizado su comprensión sobre la división en Python y puede seleccionar el método de cálculo adecuado? Si tiene dudas, es buena idea consultar la documentación oficial de Python o probar escribiendo código real.
¡Continúe aprendiendo para realizar la programación en Python de manera más cómoda en el futuro!