logo

División de piso en Python

En el siguiente tutorial, aprenderemos sobre la operación de División de Piso usando el lenguaje de programación Python.

Pero antes de comenzar, comprendamos brevemente qué es la división de piso.

Comprender la división del piso

La división de piso es una operación de división normal, excepto que devuelve el mayor número entero posible. Este número entero puede ser menor que el resultado de la división normal o igual a él.

La función suelo está representada por el símbolo ⌊ ⌋ en términos matemáticos.

Entendamos ahora el funcionamiento de la operación de la división Piso. Por ejemplo,

⌊36/5⌋

Paso 1: Realizando la división primero. nos dividiremos 36 por 5 .

36 ÷ 5 = 7.2

Paso 2: Ahora, realizaremos la función piso sobre el valor que obtenemos después de la división, es decir, 7.2 .

⌊7.2⌋=7

Como resultado, obtenemos 7 cual es el valor mínimo de 7.2 . Por lo tanto, la división de piso significa dividir y redondear hacia abajo al número entero más cercano.

Los diferentes lenguajes de programación ofrecen una función u operador integrado particular para calcular la división del piso. Algunos ejemplos pueden ser:

  1. Podemos usar el piso() Método en el lenguaje de programación C++.
  2. Podemos usar el piso() método en el lenguaje de programación Java.
  3. Podemos usar el // operador en el lenguaje de programación Python.

Sin embargo, solo discutiremos el uso de la operación de división de piso en Python con la ayuda de operador de doble barra invertida (//) .

Comprender la división del piso usando Python

En el lenguaje de programación Python, la división de piso se usa para dividir dos números y redondear el resultado al entero más cercano.

Antes de profundizar en el concepto de división del piso, recordemos brevemente el significado de la división y el funcionamiento de la matemáticas.piso() función en Python.

Realizar división regular en Python

Podemos dividir dos números usando la barra invertida ( / ) operador de división en Python. Consideremos el siguiente ejemplo que demuestra lo mismo:

Ejemplo 1:

 # declaring variables a = 13 b = 4 # performing regular division c = a / b # printing the result print(a, '/', b, '=', c) 

Producción:

 13 / 4 = 3.25 

Explicación:

En el fragmento de código anterior, hemos definido dos variables como un = 13 y segundo = 4 . Luego hemos realizado una operación de división usando la barra invertida ( / ) operador de división y almacenó el valor resultante en una nueva variable, C . Por fin hemos impreso el valor de C .

Como podemos ver, la división en Python funciona de la misma manera que la división en matemáticas.

Comprender la función math.floor() en Python

Hay un módulo matemático integrado en Python que consta de diferentes utilidades matemáticas útiles para los cálculos.

Una de esas funciones incorporadas del matemáticas módulo es el matemáticas.piso() función. Esta función acepta una entrada numérica y devuelve el valor mínimo redondeándolo hacia abajo al número entero más cercano.

Consideremos el siguiente ejemplo que demuestra lo mismo:

Ejemplo 2:

 # importing the floor() function from the math module from math import floor # declaring the variables a = 5.34 b = -5.34 # using the floor() function c = floor(a) d = floor(b) # printing the values print('Floor value of', a, '=', c) print('Floor value of', b, '=', d) 

Producción:

 Floor value of 5.34 = 5 Floor value of -5.34 = 6 

Explicación:

cómo leer el archivo csv en java

En el fragmento de código anterior, hemos importado el piso() función de la matemáticas módulo. Luego hemos declarado dos variables como a = 5,34 y b = -5,34 . Luego hemos utilizado el piso() función para calcular los valores mínimos de ambas variables y almacenarlos en nuevas variables, C y d . Por fin, hemos impreso los resultados para los usuarios.

Ahora que hemos entendido los conceptos de división y piso de números en Python. Vayamos a los detalles asociados con la división del piso en Python.

Realizar división de piso en Python

La división de piso es una operación en Python que nos permite dividir dos números y redondear el valor resultante al entero más cercano. La división del suelo se produce a través del operador de doble barra invertida (//) . La sintaxis del mismo se muestra a continuación:

Sintaxis:

 res = var_1 // var_2 

Dónde:

    reses el valor resultante de la división del pisoera_1es el dividendoera_2es el divisor

Podemos pensar en la división del piso como la división regular combinada con la matemáticas.piso() Llamada de función.

Nota: La división de piso puede redondear cualquier número al entero más cercano. Por ejemplo, 3,99 se seguirá redondeando a la baja a 3.

Consideremos ahora un ejemplo que demuestra el funcionamiento de la división del piso.

Ejemplo 3:

 # declaring the variables a = 13 b = 5 # using the // operator c = a // b # comparing the floor value with regular division d = a / b # printing the values print('Floor Division:', a, '//', b, '=', c) print('Regular Division:', a, '/', b, '=', d) 

Producción:

 Floor Division: 13 // 5 = 2 Regular Division: 13 / 5 = 2.6 

Explicación:

En el fragmento de código anterior, hemos declarado dos variables como un = 13 y segundo = 5 . Luego hemos utilizado el // operador para calcular el valor de división del piso y almacenó el valor del piso en una nueva variable, C . Luego hemos realizado la división regular usando el / operador y almacenó el valor en otra variable, d . Por fin hemos impreso ambos resultados y los hemos comparado.

Ahora, consideremos otro ejemplo usando el matemáticas.piso() función.

Ejemplo 4:

 # importing the floor() function from the math module from math import floor # declaring the variables a = 17 b = 5 # using the floor() function c = floor(a / b) # comparing the floor() function with // operator d = a // b # printing the values print('Floor Division using floor() function:', c) print('Floor Division using // operator:', d) 

Producción:

 Floor Division using floor() function: 3 Floor Division using // operator: 3 

Explicación:

Hemos importado el piso() función de la matemáticas módulo en el fragmento de código anterior. Luego hemos declarado dos variables como un = 17 y segundo = 5 . Luego usamos el piso() función, dividida a por b y lo almacenó en la variable c. Luego hemos calculado el valor mínimo utilizando el // operador y almacenó el valor en una nueva variable, d . Por fin, hemos impreso ambos valores y los hemos comparado.

Realizar división de piso con números negativos

También podemos realizar la división de pisos usando números negativos.

En el caso de números negativos, el valor resultante todavía se redondea hacia abajo al entero más cercano. Algunos pueden confundirse porque redondear un número negativo implica alejarse de cero. Por ejemplo, -2.3 está derribado hasta -3 .

Consideremos un ejemplo que demuestra la división del piso con números negativos.

Ejemplo 5:

 # declaring the variables a = -10 b = 4 # calculating floor value using // operator c = a // b # printing the value print('Floor Division:', a, '//', b, '=', c) 

Producción:

 Floor Division: -10 // 4 = -3 

Explicación:

En el fragmento de código anterior, hemos declarado dos variables como un = -10 y segundo = 4 . Luego hemos utilizado el // operador para calcular el valor mínimo y lo almacenó en una nueva variable, C . Por fin, hemos impreso el valor para el usuario.

Con una división regular, -10 / 4 volvería -2.5 ; sin embargo, con una división de piso, este número se redondea hacia abajo al entero negativo más cercano, es decir, a -3 .

Realizar división de piso con flotadores

También podemos realizar división de piso con flotadores en Python. Cuando los flotadores dividen el piso, el resultado es un flotador que representa el número entero más cercano.

Consideremos el siguiente ejemplo que demuestra la división del piso usando flotadores.

Ejemplo 6:

 # initializing the lists a = [17.5, 10, 13.4] b = [3.3, 2.5, 3] # using for-loop to iterate through the list for i in range(0, 3): # calculating the floor division value c = a[i] // b[i] # printing the result print(a[i], '//', b[i], '=', c) 

Producción:

 17.5 // 3.3 = 5.0 10 // 2.5 = 4.0 13.4 // 3 = 4.0 

Explicación:

En el fragmento de código anterior, hemos inicializado dos listas. Luego hemos utilizado el para -bucle para recorrer los elementos de estas listas, calculó los valores para cada operación de división de piso e imprimió los resultados para los usuarios.

Como resultado, podemos observar que la operación de división de piso se realiza usando flotantes y float with integer devuelve el valor redondeando hacia abajo al entero más cercano representado como flotantes.

División de piso y módulo en Python

En Matemáticas, módulo es un concepto asociado principalmente a la división de pisos. También podemos decir que módulo significa el resto de la división entre dos números. Es decir, podemos contar con él el número de sobras.

Podemos calcular el módulo en Python usando el porcentaje ( % ) operador.

Linux que

Consideremos un ejemplo que ilustra la relación entre la división de piso y el módulo en Python.

Ejemplo 7.1:

Dados 13 dulces y 4 comensales, podemos calcular la cantidad de dulces que recibe cada comensal con la ayuda de la división del piso.

Código:

 # declaring variables numberOfCandies = 13 numberOfEaters = 4 # using floor division to calculate the number of candies each eater gets candiesPerEater = numberOfCandies // numberOfEaters # printing values print('Number of Candies:', numberOfCandies) print('Number of Eaters:', numberOfEaters) print('The number of candies each eater gets:', candiesPerEater) 

Producción:

 Number of Candies: 13 Number of Eaters: 4 The number of candies each eater gets: 3 

Explicación:

En el fragmento de código anterior, hemos declarado algunas variables que indican la cantidad de dulces y comensales. Luego hemos utilizado el // operador para realizar la división del piso para calcular la cantidad de dulces que recibe cada comensal. Luego hemos impreso estos valores para el usuario.

Calculemos ahora el número total de dulces compartidos entre el grupo. Esto no es muy importante.

Ejemplo 7.2:

Multiplicaremos la cantidad de dulces por persona por la cantidad de comensales.

Código:

 # calculating the total number of candies being shared among the group totalCandiesShared = candiesPerEater * numberOfEaters # printing values print('The total number of candies being shared among the group:', totalCandiesShared) 

Producción:

 The total number of candies being shared among the group: 12 

Explicación:

En el fragmento de código anterior, calculamos la cantidad total de dulces que se comparten entre el grupo multiplicando la cantidad de dulces por persona por la cantidad de comensales e imprimimos el valor resultante para los usuarios.

El número total de caramelos completos compartidos es 12 . Sin embargo, el número total de dulces es 13 . Esta afirmación implica que sobrará un caramelo y no se va a comer.

El ejemplo anterior describe una forma de calcular la cantidad de sobras. Sin embargo, si solo nos interesa el número de sobras, podemos calcularlo directamente con la ayuda del módulo.

Ejemplo 7.3:

Dados 13 dulces y 4 comensales, ¿cuál es la cantidad de dulces sobrantes?

Código:

 # declaring variables numberOfCandies = 13 numberOfEaters = 4 # using modulo to calculate the leftover candies leftoverCandies = numberOfCandies % numberOfEaters # printing values print('Number of Candies:', numberOfCandies) print('Number of Eaters:', numberOfEaters) print('Total number of Leftover Candies:', leftoverCandies) 

Producción:

 Number of Candies: 13 Number of Eaters: 4 Total number of Leftover Candies: 1 

Explicación:

En el fragmento de código anterior, hemos declarado las variables que almacenan el valor de los dulces y los comedores. Luego hemos calculado el número de dulces sobrantes usando el % operador que indica la operación de módulo. Por fin, hemos impreso algunas declaraciones y valores resultantes para los usuarios. Como resultado, podemos ver que los dulces sobrantes son 1 .

a = b * (a // b) + (a % b)

En Python, la división del piso y el módulo están relacionados mediante la siguiente ecuación:

Dónde:

    aes el dividendo.bes el divisor.

Por ejemplo, verifiquemos que la ecuación anterior se cumple con los 13 dulces y los 4 comensales.

13 = 4 * (13 // 4) + (13 % 4)
13 = 4 * 3 + 1
13 = 13

Así, hemos entendido los conceptos de división de piso y módulo en Python. Ahora veremos alguna función incorporada que calcula ambos.

Comprender la función divmod() en Python

Python ofrece una función incorporada llamada divmod() que nos permite calcular tanto la división del piso como el módulo entre dos valores numéricos.

La sintaxis para el divmod() La función se muestra a continuación:

Sintaxis:

 res = divmod(var_1, var_2) 

Dónde:

    reses el resultado como una tupla. Esta tupla tiene el resultado de la división del piso y el resto lo da el módulo.era_1es el dividendo.era_2es el divisor.

Consideremos ahora el siguiente ejemplo que demuestra la divmod() función.

Ejemplo 8:

Dados 13 dulces y 4 comensales, ¿cuántos dulces completos recibe cada comensal y cuántos dulces quedan?

pandas creando marco de datos

Código:

 # declaring variables numberOfCandies = 13 numberOfEaters = 4 # using the divmod() function nCandies, nLeftovers = divmod(numberOfCandies, numberOfEaters) # printing values print('Number of Candies:', numberOfCandies) print('Number of Eaters:', numberOfEaters) print('Number of Candies per eater:', nCandies) print('Total number of Leftover Candies:', nLeftovers) 

Producción:

 Number of Candies: 13 Number of Eaters: 4 Number of Candies per eater: 3 Total number of Leftover Candies: 1 

Explicación:

En el fragmento de código anterior, hemos declarado algunas variables. Hemos utilizado el divmod() función para calcular el valor de división del piso y el módulo para las variables dadas. Luego hemos impreso estos valores para los usuarios.

Comprensión de la precedencia de división de pisos

En Python, el operador de división de piso. // tiene el mismo nivel de precedencia que la multiplicación ( * ), división ( / ), y módulo ( % ).

Esta afirmación implica que si multiplicamos y luego dividimos por piso, primero se logra la multiplicación y luego la división por piso y viceversa.

Sin embargo, si, por ejemplo, restamos dos números y luego realizamos la división del piso, la operación de división del piso allanará el camino.

Consideremos un ejemplo que demuestra lo mismo.

Ejemplo 9.1:

 # declaring some variables a = 3 b = 5 c = 6 d = 7 # performing an operation e = a * b // c - d # printing the result print(a, '*', b, '//', c, '-', d, '=', e) 

Producción:

 3 * 5 // 6 - 7 = -5 

Explicación:

En el fragmento de código anterior, hemos declarado algunas variables como a = 3, b = 5, c = 6 , y re = 7 . Luego realizamos una operación y almacenamos el valor resultante en una nueva variable, Es . Por fin, hemos impreso este valor para los usuarios.

Para comprender cómo se calcula este resultado, podemos insertar paréntesis alrededor de los términos en el orden de precedencia correcto.

El ejemplo que se muestra a continuación muestra lo mismo:

Ejemplo 9.2:

 # declaring some variables a = 3 b = 5 c = 6 d = 7 # performing an operation e = ((a * b) // c) - d # printing the result print('((', a, '*', b, ') //', c, ') -', d, '=', e) 

Producción:

 (( 3 * 5 ) // 6 ) - 7 = -5 

Explicación:

En el fragmento de código anterior, hemos declarado algunas variables como a = 3, b = 5, c = 6 , y re = 7 . Luego realizamos la misma operación pero con paréntesis y almacenamos el valor resultante en una nueva variable, Es . Por fin, hemos impreso este valor para los usuarios.

Como podemos observar, obtenemos un resultado similar al del ejemplo anterior, lo que significa que el orden de cálculo es:

Multiplicación → División de piso → Resta

Aquí está el cálculo paso a paso de lo anterior:

3 * 5 // 6 - 7
((3 * 5) // 6) - 7
(15 // 6) - 7
2 - 7
-5

Hemos entendido bien la división de suelos y su uso en el lenguaje de programación Python.

Por último, veremos un caso de uso avanzado para la división del piso. En el siguiente caso, avanzado no implica difícil; sin embargo, es bastante inusual.

Comprender el uso avanzado de la división del piso

Algunos de nosotros quizás sepamos que también podemos crear objetos personalizados que admitan la operación de división de pisos en Python. Esto puede ser posible mediante un método especial conocido como __pisodiv__() .

El método __floordiv__() en Python

La operación de división de piso en Python se usa para dividir dos números y redondear el resultado al entero más cercano.

Funciona bajo el capó porque un tipo numérico implementa un método especial llamado __pisodiv__() . Entonces, cada vez que llamamos al // operador entre dos objetos, el __pisodiv__() Se llama al método.

En Python, también podemos llamar directamente al __pisodiv__() método. Consideremos el siguiente ejemplo que demuestra lo mismo:

Ejemplo 10:

 # declaring some variables a = 31 b = 7 # performing floor division using the // operator c = a // b # performing floor division using the __floordiv__() method d = (a).__floordiv__(b) # printing the results of both operations print('Using the // operator:
', a, '//', b, '=', c) print('Using the __floordiv__() method:
 (', a, ').__floordiv__(', b, ') =', c) 

Producción:

 Using the // operator: 31 // 7 = 4 Using the __floordiv__() method: ( 31 ).__floordiv__( 7 ) = 4 

Explicación:

En el fragmento de código anterior, hemos declarado dos variables como a = 31 y segundo = 7 . Luego realizamos la división del piso usando el // operador y __pisodiv__() método y almacenó sus valores resultantes en dos variables, C y d . Por fin, hemos impreso los resultados para los usuarios.

Del resultado que se muestra arriba, podemos observar que ambas expresiones arrojaron el mismo resultado. Esto se debe a que la primera expresión se convierte en la segunda expresión. En otras palabras, estas llamadas son equivalentes entre sí.

Ahora las cosas se pondrán interesantes. Consideremos el siguiente ejemplo.

Ejemplo 11.1:

Crearemos una clase personalizada que represente los valores enteros como cadenas en el siguiente ejemplo. Luego crearemos dos objetos de esta clase personalizada y realizaremos una operación de división de piso en ellos.

Código:

botón en el centro css
 # creating a class representing integer values as string class IntStr: def __init__(self, val): self.val = val # instantiating the class with two objects intOne = IntStr('17') intTwo = IntStr('4') # printing the result of the floor division operation print(intOne // intTwo) 

Producción:

 Traceback (most recent call last): File 'D:Python_programspycase.py', line 11, in print(intOne // intTwo) TypeError: unsupported operand type(s) for //: 'IntStr' and 'IntStr' 

Explicación:

En el fragmento de código anterior, hemos definido una clase como IntStr que representa los valores enteros como cadenas. Luego hemos creado dos objetos de la IntStr clase. Por fin, tenemos piso-dividir el entonar objeto por el intdos objeto e intenté imprimir el resultado.

Sin embargo, el resultado anterior indica una Error de tecleado . Este mensaje de error revela que IntStr Los objetos no soportan la división del piso. Este error tiene sentido. ¿Cómo podría el tipo personalizado tener alguna pista sobre los objetos de cuerdas divisorias del piso?

Sin embargo, resulta que podemos hacer que IntStr División del piso de soporte de objetos.

Anteriormente, aprendimos que cada vez que llamamos al // operador, llamamos al __pisodiv__() método. Este método se ejecuta en algún lugar de la clase del objeto. Por ejemplo, los objetos int admiten la división del piso porque la clase int ha aplicado la __pisodiv__() método.

Estos métodos especiales, como __pisodiv__() , tienen algo sorprendente en común: podemos implementar estos métodos en la clase personalizada. En otras palabras, podemos hacer que los objetos personalizados admitan la división del piso en el lenguaje de programación Python.

Consideremos ahora el siguiente ejemplo que demuestra lo mismo.

Ejemplo 11.2:

En el siguiente ejemplo implementaremos la __pisodiv__() método en el IntStr clase. Luego crearemos dos objetos de esta clase personalizada y realizaremos una operación de división de piso en ellos.

Código:

 # creating a class representing integer values as string class IntStr: def __init__(self, val): self.val = val def __floordiv__(self, other): intOne = int(self.val) intTwo = int(other.val) res = intOne // intTwo return IntStr(str(res)) # instantiating the class with two objects intOne = IntStr('17') intTwo = IntStr('4') # performing floor division operation res = intOne // intTwo # printing the result of the floor division operation print(intOne.val, '//', intTwo.val, '=', res.val) 

Producción:

 17 // 4 = 4 

Explicación:

En el fragmento de código anterior, hemos definido una clase como IntStr que representa los valores enteros como cadenas. También hemos implementado el __pisodiv__() método dentro de esta clase. Este método acepta el valor de cadena numérica de sí mismo y de otro objeto. Convertimos estos valores de cadena a números enteros y realizamos una división básica entre ellos. Luego convertimos el resultado nuevamente en una cadena y creamos una nueva IntStr objeto. Instanciamos el IntStr clase con dos objetos y realizó una operación de división de piso entre ellos. Por fin, hemos impreso el valor resultante para los usuarios.

Ahora que entendemos con éxito el método para crear una clase personalizada que admita la división del piso.

Si no nos gusta el hecho de tener que llamar objeto.val Para ver el resultado, podemos implementar el __cadena__() método que devuelve directamente el valor durante la impresión.

Consideremos el siguiente ejemplo que demuestra lo mismo.

Ejemplo 11.3:

 # creating a class representing integer values as string class IntStr: def __init__(self, val): self.val = val def __floordiv__(self, other): intOne = int(self.val) intTwo = int(other.val) res = intOne // intTwo return IntStr(str(res)) def __str__(self): return self.val # instantiating the class with two objects intOne = IntStr('17') intTwo = IntStr('4') # performing floor division operation res = intOne // intTwo # printing the result of the floor division operation print(intOne, '//', intTwo, '=', res) 

Producción:

 17 // 4 = 4 

Explicación:

En el fragmento de código anterior, hemos definido una clase como IntStr que representa los valores enteros como cadenas. También hemos implementado el __pisodiv__() método dentro de esta clase. Luego hemos definido el __cadena__() método que devuelve directamente los valores de cadena durante la impresión. Instanciamos el IntStr clase con dos objetos y realizó una operación de división de piso entre ellos. Por fin, hemos impreso el valor resultante para los usuarios.