logo

Divisione del pavimento in Python

Nel seguente tutorial impareremo il funzionamento della divisione del pavimento utilizzando il linguaggio di programmazione Python.

Ma prima di iniziare, cerchiamo di capire brevemente cos’è la divisione Floor.

Comprendere la divisione Floor

La divisione del piano è una normale operazione di divisione, tranne per il fatto che restituisce il numero intero più grande possibile. Questo numero intero può essere inferiore o uguale all'output della divisione normale.

La funzione floor è indicata dal simbolo ⌊ ⌋ in termini matematici.

Cerchiamo ora di comprendere il funzionamento dell'operazione di divisione Floor. Per esempio,

⌊36/5⌋

Passo 1: Eseguire prima la divisione. Divideremo 36 di 5 .

36 ÷ 5 = 7,2

Passo 2: Ora eseguiremo la funzione floor sul valore che otteniamo dopo la divisione, ovvero 7.2 .

⌊7.2⌋=7

Di conseguenza, otteniamo 7 che è il valore minimo di 7.2 . Quindi, divisione del piano significa dividere e arrotondare per difetto all'intero più vicino.

Diversi linguaggi di programmazione offrono una particolare funzione o operatore integrato per calcolare la divisione del piano. Alcuni esempi possono essere:

  1. Possiamo usare il pavimento() metodo nel linguaggio di programmazione C++.
  2. Possiamo usare il pavimento() metodo nel linguaggio di programmazione Java.
  3. Possiamo usare il // operatore nel linguaggio di programmazione Python.

Tuttavia, discuteremo solo dell'uso dell'operazione di divisione del piano in Python con l'aiuto di operatore doppia barra rovesciata (//). .

Comprendere la divisione del pavimento utilizzando Python

Nel linguaggio di programmazione Python, la divisione del piano viene utilizzata per dividere due numeri e arrotondare il risultato all'intero più vicino.

Prima di approfondire il concetto di divisione del pavimento, ricordiamo brevemente il significato di divisione e il funzionamento del matematica.piano() funzione in Python.

Esecuzione di divisioni regolari in Python

Possiamo dividere due numeri usando la barra rovesciata ( / ) operatore di divisione in Python. Consideriamo il seguente esempio che dimostra lo stesso:

Esempio 1:

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

Produzione:

 13 / 4 = 3.25 

Spiegazione:

Nello snippet di codice sopra, abbiamo definito due variabili come un = 13 E b = 4 . Abbiamo quindi eseguito un'operazione di divisione utilizzando la barra rovesciata ( / ) operatore di divisione e memorizzato il valore risultante in una nuova variabile, C . Alla fine, abbiamo stampato il valore di C .

Come possiamo vedere, la divisione in Python funziona allo stesso modo della divisione in matematica.

Comprendere la funzione math.floor() in Python

C'è un modulo matematico integrato in Python che consiste in diverse utilità matematiche utili per i calcoli.

Una di queste funzioni integrate di matematica il modulo è il matematica.piano() funzione. Questa funzione accetta un input numerico e restituisce il valore minimo arrotondandolo per difetto all'intero più vicino.

Consideriamo il seguente esempio che dimostra lo stesso:

Esempio 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo importato il file pavimento() funzione da matematica modulo. Abbiamo quindi dichiarato due variabili come a = 5,34 E b = -5,34 . Abbiamo quindi utilizzato il pavimento() funzione per calcolare i valori minimi di entrambe le variabili e memorizzarli in nuove variabili, C E D . Alla fine, abbiamo stampato i risultati per gli utenti.

Ora che abbiamo compreso i concetti di divisione e pavimentazione dei numeri in Python. Andiamo ai dettagli associati alla divisione del pavimento in Python.

Esecuzione della divisione del pavimento in Python

La divisione del piano è un'operazione in Python che ci consente di dividere due numeri e arrotondare il valore risultante all'intero più vicino. La divisione del piano avviene attraverso il operatore doppia barra rovesciata (//). . La sintassi dello stesso è mostrata di seguito:

booleano in c

Sintassi:

 res = var_1 // var_2 

Dove:

siti come coomeet
    risè il valore risultante della divisione del pianoera_1è il dividendoera_2è il divisore

Possiamo pensare alla divisione del piano come alla divisione regolare combinata con il matematica.piano() chiamata di funzione.

Nota: la divisione del piano può arrotondare qualsiasi numero all'intero più vicino. Ad esempio, 3,99 verrà comunque arrotondato per difetto a 3.

Consideriamo ora un esempio che dimostra il funzionamento della divisione del piano.

Esempio 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato due variabili as un = 13 E b = 5 . Abbiamo quindi utilizzato il // operatore per calcolare il valore di divisione del piano e memorizzare il valore del piano in una nuova variabile, C . Abbiamo quindi eseguito la divisione regolare utilizzando il / operatore e memorizzato il valore in un'altra variabile, D . Alla fine, abbiamo stampato entrambi i risultati e li abbiamo confrontati.

Consideriamo ora un altro esempio utilizzando il file matematica.piano() funzione.

Esempio 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) 

Produzione:

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

Spiegazione:

Abbiamo importato il pavimento() funzione da matematica module nello snippet di codice sopra. Abbiamo quindi dichiarato due variabili come un = 17 E b = 5 . Abbiamo quindi utilizzato il pavimento() funzione, divisa UN di B e lo ho memorizzato nella variabile c. Abbiamo quindi calcolato il valore minimo utilizzando il // operatore e memorizzato il valore in una nuova variabile, D . Alla fine abbiamo stampato entrambi i valori e li abbiamo confrontati.

Esecuzione della divisione del pavimento con numeri negativi

Possiamo anche eseguire la divisione del piano utilizzando numeri negativi.

Nel caso di numeri negativi, il valore risultante viene comunque arrotondato per difetto all'intero più vicino. Alcuni potrebbero confondersi perché l'arrotondamento per difetto di un numero negativo implica l'allontanamento da zero. Ad esempio, -23 è ridotto a -3 .

Consideriamo un esempio che dimostra la divisione del piano con numeri negativi.

Esempio 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) 

Produzione:

 Floor Division: -10 // 4 = -3 

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato due variabili as a = -10 E b = 4 . Abbiamo quindi utilizzato il // operatore per calcolare il valore minimo e memorizzarlo in una nuova variabile, C . Alla fine, abbiamo stampato il valore per l'utente.

Con una divisione regolare, -10/4 ritornerei -2,5 ; tuttavia, con una divisione del piano, questo numero viene arrotondato per difetto all'intero negativo più vicino, ovvero a -3 .

Esecuzione della divisione del pavimento con i float

Possiamo anche eseguire la divisione del pavimento con i float in Python. Quando si divide il pavimento in float, il risultato è un float che rappresenta l'intero più vicino.

Consideriamo il seguente esempio che dimostra la divisione del pavimento utilizzando i float.

Esempio 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo inizializzato due elenchi. Abbiamo quindi utilizzato il per -loop per scorrere gli elementi di questi elenchi, calcolare i valori per ciascuna operazione di divisione del piano e stampare i risultati per gli utenti.

Di conseguenza, possiamo osservare che l'operazione di divisione del piano viene eseguita utilizzando float e float with integer restituisce il valore arrotondato per difetto all'intero più vicino rappresentato come float.

Divisione del pavimento e modulo in Python

In matematica, modulo è un concetto principalmente associato alla divisione del pavimento. Possiamo anche dire che modulo significa il resto della divisione tra due numeri. In altre parole, con esso possiamo contare il numero di avanzi.

Possiamo calcolare il modulo in Python usando la percentuale ( % ) operatore.

Consideriamo un esempio che illustra la relazione tra la divisione del piano e il modulo in Python.

Esempio 7.1:

Date 13 caramelle e 4 mangiatori, possiamo calcolare il numero di caramelle che ciascun mangiatore riceve con l'aiuto della divisione del pavimento.

Codice:

la stringa è vuota
 # 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato alcune variabili che indicano il numero di caramelle e mangiatori. Abbiamo quindi utilizzato il // l'operatore esegue la divisione del piano per calcolare il numero di caramelle che ciascun mangiatore riceve. Abbiamo quindi stampato questi valori per l'utente.

Calcoliamo ora il numero totale di caramelle condivise nel gruppo. Questo non è molto importante.

Esempio 7.2:

Moltiplicheremo il numero di caramelle per persona per il numero di mangiatori.

Codice:

 # 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo calcolato il numero totale di caramelle condivise nel gruppo moltiplicando il numero di caramelle per persona per il numero di mangiatori e stampato il valore risultante per gli utenti.

Il numero totale di caramelle piene condivise è 12 . Tuttavia, il numero totale di caramelle lo è 13 . Questa affermazione implica che una caramella rimarrà e non verrà mangiata.

L'esempio sopra descrive un modo per calcolare il numero di avanzi. Se però ci interessa solo il numero degli avanzi, possiamo calcolarlo direttamente con l'aiuto del modulo.

Esempio 7.3:

Date 13 caramelle e 4 mangiatori, qual è il numero di caramelle rimanenti?

Codice:

 # 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato le variabili che memorizzano il valore caramelle e mangiatori. Abbiamo quindi calcolato il numero di caramelle rimanenti utilizzando il % operatore che indica l'operazione modulo. Alla fine, abbiamo stampato alcune istruzioni e i valori risultanti per gli utenti. Di conseguenza, possiamo vedere che le caramelle rimanenti lo sono 1 .

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

In Python, la divisione del piano e il modulo sono correlati dalla seguente equazione:

Dove:

    UNè il dividendo.Bè il divisore.

Ad esempio, verifichiamo che l'equazione sopra vale con le 13 caramelle e i 4 mangiatori.

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

Pertanto, abbiamo compreso i concetti di divisione del piano e modulo in Python. Ora esamineremo alcune funzioni integrate che li calcolano entrambi.

Comprendere la funzione divmod() in Python

Python offre una funzione integrata chiamata divmod() che ci permette di calcolare sia la divisione del piano che il modulo tra due valori numerici.

La sintassi per divmod() la funzione è mostrata di seguito:

Sintassi:

 res = divmod(var_1, var_2) 

Dove:

    risè il risultato come una tupla. Questa tupla ha il risultato della divisione del piano e il resto dato dal modulo.era_1è il dividendo.era_2è il divisore.

Consideriamo ora il seguente esempio che dimostra il divmod() funzione.

Esempio 8:

Date 13 caramelle e 4 mangiatori, quante caramelle piene riceve ciascun mangiatore e quante caramelle rimangono?

Codice:

 # 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato alcune variabili. Abbiamo utilizzato il divmod() funzione per calcolare il valore della divisione del piano e il modulo per le variabili indicate. Abbiamo quindi stampato questi valori per gli utenti.

al metodo stringa java

Comprendere la precedenza della divisione del piano

In Python, l'operatore di divisione del piano // ha il livello di precedenza simile alla moltiplicazione ( * ), divisione ( / ) e modulo ( % ).

Questa affermazione implica che se moltiplichiamo e poi dividiamo, si ottiene prima la moltiplicazione e poi la divisione minima e viceversa.

Tuttavia, se ad esempio sottraiamo due numeri e poi eseguiamo la divisione del piano, l'operazione di divisione del piano aprirà la strada.

Consideriamo un esempio che dimostra la stessa cosa.

Esempio 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) 

Produzione:

 3 * 5 // 6 - 7 = -5 

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato alcune variabili come a = 3, b = 5, c = 6 , E d = 7 . Abbiamo quindi eseguito un'operazione e memorizzato il valore risultante in una nuova variabile, È . Alla fine, abbiamo stampato questo valore per gli utenti.

Per capire come viene calcolato questo risultato, possiamo inserire delle parentesi attorno ai termini nel corretto ordine di precedenza.

L'esempio mostrato di seguito illustra lo stesso:

Esempio 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) 

Produzione:

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

Spiegazione:

Nello snippet di codice sopra, abbiamo dichiarato alcune variabili come a = 3, b = 5, c = 6 , E d = 7 . Abbiamo quindi eseguito la stessa operazione ma con parentesi e memorizzato il valore risultante in una nuova variabile, È . Alla fine, abbiamo stampato questo valore per gli utenti.

Come possiamo osservare, otteniamo il risultato simile a quello dell'esempio precedente, il che significa che l'ordine di calcolo è:

Moltiplicazione → Divisione del pavimento → Sottrazione

Ecco il calcolo graduale di quanto sopra:

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

Abbiamo compreso correttamente la divisione del piano e il suo utilizzo nel linguaggio di programmazione Python.

Infine, esamineremo un caso d'uso avanzato per la divisione del piano. Nel caso seguente, avanzato non implica difficile; tuttavia, è piuttosto insolito.

Comprendere l'uso avanzato di Floor Division

Alcuni di noi potrebbero essere consapevoli che possiamo anche creare oggetti personalizzati che supportano l'operazione di divisione del piano in Python. Ciò può essere possibile attraverso un metodo speciale noto come __floordiv__() .

Il metodo __floordiv__() in Python

L'operazione di divisione del piano in Python viene utilizzata per dividere due numeri e arrotondare il risultato all'intero più vicino.

Funziona dietro le quinte perché un tipo numerico implementa un metodo speciale chiamato __floordiv__() . Quindi, ogni volta che chiamiamo il // operatore tra due oggetti, il __floordiv__() il metodo viene chiamato.

In Python, possiamo anche chiamare direttamente the __floordiv__() metodo. Consideriamo il seguente esempio che dimostra lo stesso:

Esempio 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) 

Produzione:

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

Spiegazione:

cena vs ora di cena

Nello snippet di codice sopra, abbiamo dichiarato due variabili as a = 31 E b = 7 . Abbiamo quindi eseguito la divisione del pavimento utilizzando il metodo // operatore e __floordiv__() metodo e memorizzato i valori risultanti in due variabili, C E D . Alla fine, abbiamo stampato i risultati per gli utenti.

Dall'output mostrato sopra, possiamo osservare che entrambe le espressioni hanno prodotto lo stesso risultato. Questo perché la prima espressione viene convertita nella seconda espressione. In altre parole, queste chiamate sono equivalenti tra loro.

Ora le cose si faranno interessanti. Consideriamo il seguente esempio.

Esempio 11.1:

Creeremo una classe personalizzata che rappresenta i valori interi come stringhe nell'esempio seguente. Creeremo quindi due oggetti di questa classe personalizzata ed eseguiremo su di essi l'operazione di divisione del piano.

Codice:

 # 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) 

Produzione:

 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' 

Spiegazione:

Nello snippet di codice sopra, abbiamo definito una classe come IntStr che rappresenta i valori interi come stringhe. Abbiamo quindi creato due oggetti del file IntStr classe. Alla fine, abbiamo diviso il pavimento intonare oggetto da parte del intDue oggetto e ho provato a stampare il risultato.

Tuttavia, l'output precedente indica a TypeError . Questo messaggio di errore lo rivela IntStr gli oggetti non supportano la divisione del piano. Questo errore ha senso. In che modo il tipo personalizzato potrebbe avere qualche indizio sugli oggetti stringhe che dividono il pavimento?

Tuttavia, a quanto pare, possiamo creare il file IntStr divisione del piano di supporto degli oggetti.

In precedenza, abbiamo appreso ogni volta che chiamiamo il // operatore, chiamiamo il __floordiv__() metodo. Questo metodo viene eseguito da qualche parte nella classe dell'oggetto. Ad esempio, gli oggetti int supportano la divisione del piano perché la classe int ha applicato il metodo __floordiv__() metodo.

Questi metodi speciali, come __floordiv__() , hanno qualcosa di straordinario in comune che possiamo implementare questi metodi nella classe personalizzata. In altre parole, possiamo fare in modo che gli oggetti personalizzati supportino la divisione del piano nel linguaggio di programmazione Python.

Consideriamo ora il seguente esempio che dimostra la stessa cosa.

Esempio 11.2:

Nell'esempio seguente, implementeremo il file __floordiv__() metodo nel IntStr classe. Creeremo quindi due oggetti di questa classe personalizzata ed eseguiremo su di essi l'operazione di divisione del piano.

Codice:

 # 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) 

Produzione:

 17 // 4 = 4 

Spiegazione:

Nello snippet di codice sopra, abbiamo definito una classe come IntStr che rappresenta i valori interi come stringhe. Abbiamo anche implementato il __floordiv__() metodo all'interno di questa classe. Questo metodo accetta il valore della stringa numerica da se stesso e da un altro oggetto. Abbiamo convertito questi valori di stringa in numeri interi ed eseguito una divisione minima tra di essi. Abbiamo quindi riconvertito il risultato in una stringa e ne abbiamo creato uno nuovo IntStr oggetto. Abbiamo istanziato il IntStr classe con due oggetti ed eseguito un'operazione di divisione del piano tra di essi. Alla fine, abbiamo stampato il valore risultante per gli utenti.

Ora che comprendiamo con successo il metodo per creare una classe personalizzata per supportare la divisione del piano.

Se non ci piace il fatto che dobbiamo chiamare oggetto.val per vedere il risultato, possiamo implementare il file __str__() metodo che restituisce direttamente il valore durante la stampa.

Consideriamo il seguente esempio che dimostra la stessa cosa.

Esempio 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) 

Produzione:

 17 // 4 = 4 

Spiegazione:

Nello snippet di codice sopra, abbiamo definito una classe come IntStr che rappresenta i valori interi come stringhe. Abbiamo anche implementato il __floordiv__() metodo all'interno di questa classe. Abbiamo quindi definito l __str__() metodo che restituisce direttamente i valori di stringa durante la stampa. Abbiamo istanziato il IntStr classe con due oggetti ed eseguito un'operazione di divisione del piano tra di essi. Alla fine, abbiamo stampato il valore risultante per gli utenti.