logo

Podjela podova u Pythonu

U sljedećem vodiču naučit ćemo o operaciji Floor Division pomoću programskog jezika Python.

Ali prije nego što počnemo, ukratko ćemo shvatiti što je podjela na kat.

Razumijevanje podjele Floor

Podjela je normalna operacija dijeljenja, osim što vraća najveći mogući cijeli broj. Ovaj cijeli broj može biti ili manji od izlaza normalnog dijeljenja ili mu jednak.

Podna funkcija je u matematičkom smislu označena simbolom ⌊ ⌋.

Razumimo sada rad operacije podjele. Na primjer,

⌊36/5⌋

Korak 1: Prvo izvođenje dijeljenja. Podijelit ćemo se 36 po 5 .

java dugi niz

36 ÷ 5 = 7,2

Korak 2: Sada ćemo izvršiti funkciju poda na vrijednosti koju dobijemo nakon dijeljenja, tj. 7.2 .

⌊7.2⌋=7

Kao rezultat toga, dobivamo 7 što je donja vrijednost 7.2 . Dakle, etažno dijeljenje znači dijeljenje i zaokruživanje na najbliži cijeli broj.

Različiti programski jezici nude određenu ugrađenu funkciju ili operator za izračun podjele. Neki primjeri mogu biti:

  1. Možemo koristiti kat() metoda u programskom jeziku C++.
  2. Možemo koristiti kat() metoda u programskom jeziku Java.
  3. Možemo koristiti // operator u programskom jeziku Python.

Međutim, raspravljat ćemo samo o korištenju operacije podjele poda u Pythonu uz pomoć dvostruka kosa crta (//) operator .

Razumijevanje podjele etaža pomoću Pythona

U programskom jeziku Python, podno dijeljenje koristi se za dijeljenje dva broja i zaokružuje rezultat na najbliži cijeli broj.

Prije nego što dublje zaronimo u koncept podjele, podsjetimo se ukratko na značenje podjele i funkcioniranje math.floor() funkcija u Pythonu.

Izvođenje regularnog dijeljenja u Pythonu

Dva broja možemo podijeliti pomoću obrnute kose crte ( / ) operator dijeljenja u Pythonu. Razmotrimo sljedeći primjer koji pokazuje isto:

Primjer 1:

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

Izlaz:

 13 / 4 = 3.25 

Obrazloženje:

U gornjem isječku koda definirali smo dvije varijable kao a = 13 i b = 4 . Zatim smo izvršili operaciju dijeljenja koristeći obrnutu kosu crtu ( / ) operator dijeljenja i pohranio rezultantnu vrijednost u novu varijablu, c . Napokon smo ispisali vrijednost c .

Kao što vidimo, dijeljenje u Pythonu funkcionira na isti način kao što dijeljenje funkcionira u matematici.

Razumijevanje funkcije math.floor() u Pythonu

U Pythonu postoji ugrađeni matematički modul koji se sastoji od različitih korisnih matematičkih alata za izračune.

Jedna takva ugrađena funkcija matematika modul je math.floor() funkcija. Ova funkcija prihvaća numerički unos i vraća donju vrijednost zaokruživanjem na najbliži cijeli broj.

Razmotrimo sljedeći primjer koji pokazuje isto:

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda uvezli smo kat() funkcija iz matematika modul. Zatim smo deklarirali dvije varijable kao a = 5,34 i b = -5,34 . Zatim smo upotrijebili kat() funkcija za izračunavanje donjih vrijednosti obje varijable i njihovo pohranjivanje u nove varijable, c i d . Napokon smo ispisali rezultate za korisnike.

Sada kada smo razumjeli koncepte dijeljenja i podnih brojeva u Pythonu. Prijeđimo na detalje povezane s podjelom poda u Pythonu.

Izvođenje Floor Divisiona u Pythonu

Podjela je operacija u Pythonu koja nam omogućuje dijeljenje dva broja i zaokružuje dobivenu vrijednost na najbliži cijeli broj. Podjela se odvija kroz dvostruka kosa crta (//) operator . Sintaksa za isti je prikazana u nastavku:

Sintaksa:

 res = var_1 // var_2 

Gdje:

    resje rezultantna vrijednost katne podjelebio_1je dividendabio_2je djelitelj

Podjelu poda možemo zamisliti kao redovitu podjelu u kombinaciji s math.floor() poziv funkcije.

Napomena: Podjela može zaokružiti bilo koji broj na najbliži cijeli broj. Na primjer, 3,99 će i dalje biti zaokruženo na 3.

Razmotrimo sada primjer koji pokazuje rad podjele.

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda, deklarirali smo dvije varijable kao a = 13 i b = 5 . Zatim smo upotrijebili // operator za izračunavanje donje vrijednosti podjele i pohranjivanje donje vrijednosti u novu varijablu, c . Zatim smo izvršili redovno dijeljenje pomoću / operator i pohranio vrijednost u drugu varijablu, d . Na kraju smo ispisali oba rezultata i usporedili ih.

Sada, razmotrimo još jedan primjer koristeći math.floor() funkcija.

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

Izlaz:

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

Obrazloženje:

Uvezli smo kat() funkcija iz matematika modul u gornjem isječku koda. Zatim smo deklarirali dvije varijable kao a = 17 i b = 5 . Zatim smo koristili kat() funkcija, podijeljena a po b , i pohranio ga u varijablu c. Zatim smo izračunali donju vrijednost pomoću // operator i pohranio vrijednost u novu varijablu, d . Na kraju smo ispisali obje vrijednosti i usporedili ih.

Izvođenje etažnog dijeljenja s negativnim brojevima

Također možemo izvršiti etažno dijeljenje koristeći negativne brojeve.

U slučaju negativnih brojeva, rezultantna vrijednost se i dalje zaokružuje prema dolje na najbliži cijeli broj. Neke bi moglo zbuniti zaokruživanje negativnog broja prema dolje implicira odlazak od nule. Na primjer, -23 se spušta na -3 .

Razmotrimo primjer koji pokazuje podjelu poda s negativnim brojevima.

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

Izlaz:

 Floor Division: -10 // 4 = -3 

Obrazloženje:

U gornjem isječku koda, deklarirali smo dvije varijable kao a = -10 i b = 4 . Zatim smo upotrijebili // operator za izračunavanje donje vrijednosti i pohranjivanje u novu varijablu, c . Napokon smo ispisali vrijednost za korisnika.

Uz pravilnu podjelu, -10/4 bi se vratio -2.5 ; međutim, s etažnim dijeljenjem, ovaj se broj zaokružuje na najbliži negativni cijeli broj, tj. -3 .

Izvođenje parterne podjele s plovcima

Također možemo izvesti Floor division s float-ima u Pythonu. Kod floata za dijeljenje poda, ishod je float koji predstavlja najbliži cijeli broj.

Razmotrimo sljedeći primjer koji pokazuje podjelu poda pomoću plovaka.

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda, inicijalizirali smo dvije liste. Zatim smo upotrijebili za -petlja za ponavljanje kroz elemente ovih popisa, izračunavanje vrijednosti za svaku operaciju podjele etaža i ispisivanje rezultata za korisnike.

Kao rezultat toga, možemo uočiti da se operacija podjele izvodi korištenjem float-ova s ​​pomičnim zamahom, a float s pomičnim zamahom s cijelim brojem vraća vrijednost zaokružujući prema dolje na najbliži cijeli broj predstavljen kao float-ove.

Floor Division i Modulo u Pythonu

U matematici, modulo je koncept koji se uglavnom povezuje s etažnom podjelom. Također možemo reći da modulo znači ostatak pri dijeljenju između dva broja. Drugim riječima, s njim možemo prebrojati ostatke.

Možemo izračunati modulo u Pythonu koristeći postotak ( % ) operator.

Razmotrimo primjer koji ilustrira odnos između podjele i modula u Pythonu.

Primjer 7.1:

Zadano je 13 bombona i 4 jedača, uz pomoć podjele možemo izračunati broj bombona koje svaki jede dobije.

Kodirati:

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda, deklarirali smo neke varijable koje označavaju broj bombona i onih koji jedu. Zatim smo upotrijebili // operater koji će izvršiti podjelu poda kako bi izračunao broj bombona koji svaki jede dobije. Zatim smo ispisali te vrijednosti za korisnika.

Izračunajmo sada ukupan broj bombona podijeljenih među grupom. Ovo nije jako važno.

Primjer 7.2:

Broj bombona po osobi pomnožit ćemo s brojem onih koji jedu.

Kodirati:

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

Izlaz:

koliko voća ima
 The total number of candies being shared among the group: 12 

Obrazloženje:

U gornjem isječku koda izračunali smo ukupan broj slatkiša koji se dijele među grupom množenjem broja slatkiša po osobi s brojem onih koji jedu i ispisali dobivenu vrijednost za korisnike.

Ukupan broj podijeljenih punih bombona je 12 . Međutim, ukupan broj bombona je 13 . Ova izjava implicira da će jedan slatkiš biti višak i neće biti pojeden.

Gornji primjer opisuje jedan način izračunavanja broja ostataka. Međutim, ako nas zanima samo broj ostataka, možemo ga izravno izračunati uz pomoć modula.

Primjer 7.3:

S obzirom na 13 bombona i 4 jela, koliki je broj preostalih bombona?

Kodirati:

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda deklarirali smo varijable koje pohranjuju vrijednost candies i eaters. Zatim smo izračunali broj preostalih bombona pomoću % operator koji označava modulo operaciju. Napokon smo ispisali neke izjave i rezultirajuće vrijednosti za korisnike. Kao rezultat toga, možemo vidjeti da je ostatak slatkiša 1 .

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

U Pythonu, katna podjela i modulo povezani su sljedećom jednadžbom:

Gdje:

    aje dividenda.bje djelitelj.

Na primjer, provjerimo vrijedi li gornja jednadžba s 13 bombona i 4 jela.

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

Dakle, razumjeli smo koncepte podjele i modula u Pythonu. Sada ćemo pogledati neku ugrađenu funkciju koja izračunava oboje.

Razumijevanje funkcije divmod() u Pythonu

Python nudi ugrađenu funkciju tzv divmod() koji nam omogućuje izračunavanje i podjele i modula između dvije numeričke vrijednosti.

Sintaksa za divmod() funkcija je prikazana u nastavku:

Sintaksa:

 res = divmod(var_1, var_2) 

Gdje:

    resje rezultat kao torka. Ova torka ima rezultat dijeljenja poda i ostatak dat modulom.bio_1je dividenda.bio_2je djelitelj.

Razmotrimo sada sljedeći primjer koji pokazuje divmod() funkcija.

Primjer 8:

S obzirom na 13 bombona i 4 jedača, koliko punih bombona dobiva svaki jelac, a koliko bombona ostaje?

Kodirati:

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda deklarirali smo neke varijable. Koristili smo divmod() funkcija za izračunavanje vrijednosti podjele i modula za dane varijable. Zatim smo ispisali te vrijednosti za korisnike.

Razumijevanje prvenstva katova

U Pythonu, operator podjele // ima sličnu razinu prednosti kao množenje ( * ), podjela ( / ), i modulo ( % ).

Ova tvrdnja implicira da ako množimo, a zatim dijelimo na kat, prvo se postiže množenje, a zatim dijeljenje na kat i obrnuto.

Međutim, ako na primjer oduzmemo dva broja i zatim izvršimo etažno dijeljenje, operacija katnog dijeljenja otvorit će put.

Razmotrimo primjer koji pokazuje isto.

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

Izlaz:

 3 * 5 // 6 - 7 = -5 

Obrazloženje:

U gornjem isječku koda, deklarirali smo neke varijable kao a = 3, b = 5, c = 6 , i d = 7 . Zatim smo izvršili operaciju i pohranili rezultantnu vrijednost u novu varijablu, to je . Napokon smo ispisali ovu vrijednost za korisnike.

Da bismo razumjeli kako se ovaj rezultat izračunava, možemo umetnuti zagrade oko izraza u ispravnom redoslijedu prvenstva.

Primjer prikazan u nastavku prikazuje isto:

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda, deklarirali smo neke varijable kao a = 3, b = 5, c = 6 , i d = 7 . Zatim smo izvršili istu operaciju, ali sa zagradama i pohranili rezultantnu vrijednost u novu varijablu, to je . Napokon smo ispisali ovu vrijednost za korisnike.

hrithik roshan

Kao što možemo primijetiti da dobivamo sličan rezultat kao iz prethodnog primjera, što znači da je redoslijed izračuna sljedeći:

Množenje → Kat Dijeljenje → Oduzimanje

Ovo je postupni izračun gore navedenog:

3 * 5 // 6 - 7
((3 * 5) // 6) - 7
(15 // 6) - 7
2 - 7 (izvorni znanstveni rad, znanstveni).
-5

Ispravno smo razumjeli podjelu podova i njihovu upotrebu u programskom jeziku Python.

Na kraju ćemo pogledati napredni slučaj korištenja za podjele. U sljedećem slučaju napredno ne znači teško; međutim, to je prilično neobično.

Razumijevanje unaprijednog korištenja katova

Neki od nas možda znaju da također možemo napraviti prilagođene objekte koji podržavaju operaciju podjele u Pythonu. To je moguće pomoću posebne metode poznate kao __floordiv__() .

Metoda __floordiv__() u Pythonu

Operacija katnog dijeljenja u Pythonu koristi se za dijeljenje dva broja i zaokružuje rezultat na najbliži cijeli broj.

Radi ispod haube jer numerički tip implementira posebnu metodu tzv __floordiv__() . Zatim, kad god nazovemo // operator između dva objekta, the __floordiv__() metoda se poziva.

U Pythonu također možemo izravno pozvati __floordiv__() metoda. Razmotrimo sljedeći primjer koji pokazuje isto:

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

Izlaz:

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

Obrazloženje:

U gornjem isječku koda, deklarirali smo dvije varijable kao a = 31 i b = 7 . Zatim smo izvršili podjelu poda pomoću // operater i __floordiv__() metodu i pohranjuju njihove rezultantne vrijednosti u dvije varijable, c i d . Napokon smo ispisali rezultate za korisnike.

Iz gore prikazanog izlaza možemo primijetiti da su oba izraza dala isti rezultat. To je zato što se prvi izraz pretvara u drugi izraz. Drugim riječima, ovi pozivi su međusobno ekvivalentni.

Sada će stvari postati zanimljive. Razmotrimo sljedeći primjer.

Primjer 11.1:

Stvorit ćemo prilagođenu klasu koja predstavlja cjelobrojne vrijednosti kao nizove u sljedećem primjeru. Zatim ćemo stvoriti dva objekta ove prilagođene klase i na njima izvršiti operaciju podjele.

Kodirati:

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

Izlaz:

 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' 

Obrazloženje:

U gornjem isječku koda definirali smo klasu kao IntStr koji predstavlja cjelobrojne vrijednosti kao nizove. Zatim smo stvorili dva objekta IntStr razreda. Napokon imamo podjele intonirati objekt od strane intTwo objekt i pokušao ispisati rezultat.

Međutim, gornji rezultat ukazuje na a TypeError . Ova poruka o pogrešci to otkriva IntStr objekti ne podržavaju etažnu podjelu. Ova greška ima smisla. Kako bi prilagođeni tip imao ikakvu naznaku o objektima nizova koji dijele pod?

Međutim, kako se ispostavilo, možemo napraviti IntStr potpora objektu katna podjela.

Ranije smo učili kad god zovemo // operatera, zovemo __floordiv__() metoda. Ova metoda se izvodi negdje u klasi objekta. Na primjer, int objekti podržavaju katnu podjelu jer je int klasa primijenila __floordiv__() metoda.

if else izjave java

Ove posebne metode, kao __floordiv__() , imaju nešto nevjerojatno zajedničko što možemo implementirati ove metode u prilagođenu klasu. Drugim riječima, možemo učiniti da prilagođeni objekti podržavaju etažnu podjelu u programskom jeziku Python.

Razmotrimo sada sljedeći primjer koji pokazuje isto.

Primjer 11.2:

U sljedećem primjeru ćemo implementirati __floordiv__() metoda u IntStr razreda. Zatim ćemo stvoriti dva objekta ove prilagođene klase i na njima izvršiti operaciju podjele.

Kodirati:

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

Izlaz:

 17 // 4 = 4 

Obrazloženje:

U gornjem isječku koda definirali smo klasu kao IntStr koji predstavlja cjelobrojne vrijednosti kao nizove. Također smo implementirali __floordiv__() metoda unutar ove klase. Ova metoda prihvaća numeričku vrijednost niza od sebe i drugog objekta. Konvertirali smo ove vrijednosti niza u cijele brojeve i izvršili podjele između njih. Zatim smo rezultat pretvorili natrag u niz i stvorili novi IntStr objekt. Instancirali smo IntStr razreda s dva objekta i izvršio operaciju podjele među njima. Napokon smo ispisali rezultantnu vrijednost za korisnike.

Sada kada uspješno razumijemo metodu izrade prilagođene klase za podršku podjele podova.

Ako nam se ne sviđa činjenica da moramo nazvati objekt.val da bismo vidjeli rezultat, možemo implementirati __str__() metoda koja izravno vraća vrijednost tijekom ispisa.

Razmotrimo sljedeći primjer koji pokazuje isto.

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

Izlaz:

 17 // 4 = 4 

Obrazloženje:

U gornjem isječku koda definirali smo klasu kao IntStr koji predstavlja cjelobrojne vrijednosti kao nizove. Također smo implementirali __floordiv__() metoda unutar ove klase. Zatim smo definirali __str__() metoda koja izravno vraća vrijednosti niza tijekom ispisa. Instancirali smo IntStr razreda s dva objekta i izvršio operaciju podjele među njima. Napokon smo ispisali rezultantnu vrijednost za korisnike.