In diesem Lernprogramm erfahren Sie, wie Sie eine Bodenteilung in Python durchführen. Sie verwenden den //-Operator von Python, die Floor-Funktion aus dem Math-Modul von Python und mehr – mit Codebeispielen.
Wir beginnen mit einem Überblick über arithmetische Operatoren in Python und lernen, wie der Floor Division Operator // funktioniert. Dann lernen wir, wie man andere äquivalente Methoden verwendet, einschließlich Funktionen aus den Mathematik- und Operatormodulen, um eine Stockwerksteilung durchzuführen.
Lass uns anfangen…
Arithmetic Operators in Python
In Python können Sie arithmetische Operatoren verwenden, um einfache arithmetische Operationen mit Zahlen von durchzuführen int
und float
Datentypen. Diese Operatoren wirken auf Operanden (die Zahlen) und geben das Ergebnis der Operation zurück.

Die folgende Tabelle fasst die arithmetischen Operatoren in Python und ihre Funktionsweise zusammen:
Operator | Syntax | Ergebnis |
Zusatz (+) | num1+num2 | Gibt die Summe von zurück num1 und num2 |
Subtraktion (-) | num1-num2 | Gibt die Differenz zwischen zurück num1 und num2 |
Multiplikation (*) | num1*num2 | Gibt das Produkt von zurück num1 und num2 |
Potenzierung (**) | num1**num2 | Gibt das Ergebnis von zurück num1 zur Macht erhoben num2 ; num1 num2 |
Aufteilung (/) | num1/num2 | Gibt das Ergebnis zurück, wenn num1 wird geteilt durch num2 – einschließlich des Bruchteils |
Etagenaufteilung (/) | num1//num2 | Gibt den Quotienten wann zurück num1 wird geteilt durch num2 |
Modulo (%) | num1 % num2 | Gibt den Rest zurück, wenn num1 wird geteilt durch num2 |
Nehmen wir ein paar Beispiele, die diese arithmetischen Operatoren verwenden. Sie können diese Beispiele in einer Python REPL oder in ausprobieren Der Online-Python-Editor von Geekflare.
>>> num1 = 18
>>> num2 = 5
>>> num1 + num2
23
>>> num1 - num2
13
>>> num1 * num2
90
>>> num1 ** num2
1889568
In diesem Beispiel num1
ist 18 und num2
ist 5. Die Divisionsoperation num1/num2
gibt das Ergebnis einschließlich des Bruchteils zurück.
Die Zahl 5 geht dreimal in 18 über und lässt einen Rest von drei übrig. Daher die Bodenaufteilungsoperation, num1//num2
, ergibt den Quotienten 3, während der Modulo-Operator den Rest ergibt – in diesem Fall ebenfalls 3.
>>> num1/num2
3.6
>>> num1//num2
3
>>> num1 % num2
3
Dies sollte Ihnen eine Vorstellung davon vermitteln, wie die Divisions-, Floor-Divisions- und Modulo-Operatoren funktionieren. Als Nächstes lernen wir den Floor-Division-Operator im Detail kennen.
⚠️ In Python 2 schneidet die Divisionsoperation (/) das Ergebnis auf die nächste Ganzzahl ab – ähnlich der Floor-Divisionsoperation in Python 3. In diesem Tutorial wird erläutert, wie die Floor-Divisionsoperation in Python 3.x funktioniert.
Floor Division Using the // Operator

Betrachten Sie eine Divisionsoperation mit einem Dividenden und einem Divisor. Im num1/num2
, num1
ist die Dividende und num2
ist der Teiler. Bodenaufteilung durchzuführen num1
und num2
, benutzen Sie num1//num2
.
Dieses Etagenbetreiber (//) gibt den Quotienten der Divisionsoperation zurück – als Ganzzahl oder als Fließkommazahl – abhängig von den Datentypen der Operanden.
Der Floor-Division-Operator stellt nicht sicher, dass die Antwort immer eine ganze Zahl ist. Wenn entweder die Dividende (num1
) oder der Divisor (num2
) ist ein Float dann das Ergebnis von num1//num2
ist ein Schwimmer. Hier sind ein paar Beispiele.
>>> 18.0//5
3.0
>>> 10.0//4
2.0
>>> 15//4.0
3.0
Wenn das Ergebnis eine Ganzzahl sein soll, müssen Sie es explizit mit in eine Ganzzahl umwandeln int()
Funktion:
>>> int(18.0//5)
3
>>> int(10.0//4)
2
>>> int(15//4.0)
3
Was passiert unter der Haube?
Wenn Sie den Floor-Division-Operator // verwenden, wird die spezielle Methode (auch Dunder-Methode genannt) __floordiv__()
wird angerufen. Daher können Sie auch die verwenden __floordiv__()
-Methode für eine beliebige Ganzzahl oder Gleitkommazahl, wie unten gezeigt:
num1 = 18
num2 = 5
num1.__floordiv__(num2)
# Output: 3
Floor Division Using operator.floordiv()

💡 Um die Bodenteilung in Python durchzuführen, können Sie auch die verwenden floordiv()
Funktion in der operator
Modul.
Pythons Betreibermodul enthält die Definitionen effizienter Funktionen, die alle arithmetischen Operationen ausführen können. Daher können Sie zur Durchführung der Bodenaufteilung auch die verwenden floordiv()
Funktion aus dem Operatormodul – anstelle des // Operators.
Verwendung der floordiv()
Die Funktion des Betreibermoduls entspricht der Verwendung des Etagenunterteilungsoperators.
>>> import operator
>>> operator.floordiv(18,5)
# Output: 3
>>> operator.floordiv(12,5.0)
# Output: 2.0
Floor Division Using math.floor()
Wie funktioniert die Bodenfunktion?
In der Mathematik ist die
floor()
Die Funktion nimmt eine beliebige reelle Zahl anx
als Eingabe und gibt eine Ganzzahl (Ergebnis) zurück. Dieses Ergebnis ist die größte ganze Zahl das ist Gleich oder kleiner als die reelle Zahl x.
Um dies besser zu verstehen, nehmen wir einige Beispiele und visualisieren diese Zahlen auf einem Zahlenstrahl.
Beispiel 1: Betrachten Sie die Zahl 2.3. Die größte ganze Zahl, die kleiner oder gleich 2.3 ist, ist 2; also gibt floor(2.3) 2 zurück.

Beispiel 2: Sie können die gleiche Definition auch anwenden, wenn Sie mit negativen Zahlen arbeiten. Betrachten Sie die Zahl -1.7. Die größte Ganzzahl, die kleiner oder gleich -1.7 ist, ist -2; floor(-1.7) gibt also -2 zurück.

Lassen Sie uns die obigen Ergebnisse mit dem überprüfen floor()
Funktion aus dem Mathematikmodul.
>>> from math import floor
>>> floor(2.3)
2
>>> floor(-1.7)
-2
Um die Bodenaufteilung durchzuführen, können Sie die anrufen floor()
funktionieren mit num1/num2
als Argument. Da es das Ergebnis auf die nächste ganze Zahl abschneidet oder abrundet, entspricht es der Floor Division Operation.
Sie können die explizit importieren floor()
Funktion von der math
Modul, wie abgebildet:
from math import floor
num1 = 18
num2 = 5
floor(num1/num2)
# Output: 3
Alternativ können Sie auch nur die importieren math
Modul und greifen Sie dann auf die floor()
Funktion mit math.floor()
.
import math
num1 = 18
num2 = 5
math.floor(num1/num2)
# Output: 3
im Gegensatz zu den floordiv()
Funktion aus dem Operatormodul und dem Floor Division Operator //, using math.floor(num1/num2)
stellt sicher, dass das Ergebnis eine ganze Zahl ist. Diese Methode macht den Code lesbar und eliminiert den Typumwandlungsschritt.
import math
num1 = 18.0
num2 = 5
math.floor(num1/num2)
# Output: 3
Examples of Floor Division in Python

Lassen Sie uns unsere Diskussion mit einem praktischen Beispiel abschließen: Binäre Suche. ✅.
📑 Die binäre Suche ist ein effizienter Suchalgorithmus, mit dem Sie durch sortierte Arrays nach einem Zielelement suchen können O (log n) Zeit, wo n ist die Größe des Arrays.
Dieser Algorithmus funktioniert, indem er das Suchintervall bei jedem Schritt halbiert. Dies geschieht abhängig davon, ob der Mittelpunkt des Intervalls mit dem Ziel übereinstimmt (Suche endet, wenn eine Übereinstimmung gefunden wird!) oder kleiner oder größer als das Ziel ist. Da die Größe des Arrays bei jedem Schritt um die Hälfte reduziert wird, ergibt der Mittelpunkt nicht immer eine ganze Zahl.
itemlist = [5,7,18,21,34,45]
item = 7
Betrachten Sie die folgende Implementierung des binären Suchalgorithmus. Die Funktion binary_search()
nimmt eine Zahl auf (item
) und eine Liste (itemlist
) und sucht nach dem Vorkommen der item
in itemlist
.
- Besitzt das
item
gefunden wird, gibt die Funktion den Index zurück, bei demitem
tritt ein. - Andernfalls kehrt es zurück
None
.
def binary_search(item, itemlist):
# get the list size
listsize = len(itemlist) - 1
# start at the two ends of the list
lowerIdx = 0
upperIdx = listsize
while lowerIdx <= upperIdx:
# calculate the middle point
# use normal division instead of floor division
midPt = (lowerIdx + upperIdx)/ 2
# if item is found, return the index
if itemlist[midPt] == item:
return midPt
# otherwise get the next midpoint
if item > itemlist[midPt]:
lowerIdx = midPt + 1
else:
upperIdx = midPt - 1
if lowerIdx > upperIdx:
return None
Diese Implementierung ist funktional korrekt, außer dass wir dies nicht berücksichtigt haben midPt
wird im Verlauf der Suche nicht zu einer ganzen Zahl ausgewertet.
binary_search(item,itemlist)
Wenn wir die Funktion aufrufen, stoßen wir auf a TypeError
besagt, dass die Listenindizes Integer oder Slices sein müssen, nicht Float.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-a5f12ebc3145> in <module>
----> 1 binary_search(item,itemlist)
<ipython-input-2-524ef6900b1f> in binary_search(item, itemlist)
12
13 # if item is found, return the index
---> 14 if itemlist[midPt] == item:
15 return midPt
16 # otherwise get the next midpoint
TypeError: list indices must be integers or slices, not float
Wir modifizieren die Funktionsdefinition, um den Floor-Division-Operator zu verwenden:
def binary_search(item, itemlist):
# get the list size
listsize = len(itemlist) - 1
# start at the two ends of the list
lowerIdx = 0
upperIdx = listsize
while lowerIdx <= upperIdx:
# calculate the middle point
# use floor division
midPt = (lowerIdx + upperIdx)// 2
# if item is found, return the index
if itemlist[midPt] == item:
return midPt
# otherwise get the next midpoint
if item > itemlist[midPt]:
lowerIdx = midPt + 1
else:
upperIdx = midPt - 1
if lowerIdx > upperIdx:
return None
Die Funktion gibt den Index zurück, an dem das Element 7 gefunden wird, also Index eins.
binary_search(item,itemlist)
# Output: 1
Fazit
Ich hoffe, dieses Tutorial hat Ihnen geholfen zu verstehen, wie Sie die Bodenteilung in Python durchführen. Hier ist eine Zusammenfassung der verschiedenen Methoden, die Sie gelernt haben:
- In Python ein Bediener b führt die vom Operator definierte Operation mit a und b als Operanden aus und gibt das Ergebnis der Operation zurück.
- Sie können Pythons Floor-Division-Operator // verwenden; a//b gibt den Quotienten der Divisionsoperation a/b zurück.
- Alternativ können Sie das Äquivalent verwenden floordiv() Funktion, die im Operatormodul von Python mit der folgenden Syntax definiert ist: operator.floordiv(a,b) um das Ergebnis von a//b zu erhalten.
- Alle oben genannten Methoden geben den Quotienten zurück, aber der Datentyp kann abhängig von den Werten von a und b Float oder Int sein. Sie müssen also den Rückgabewert in eine Ganzzahl umwandeln.
- Dieses Fußboden() Die Funktion aus dem Math-Modul von Python kann auch zur Bodenteilung verwendet werden: math.floor(a,b) entspricht a//b und gibt eine ganze Zahl zurück. Wenn Sie möchten, dass das Ergebnis eine Ganzzahl ist, sollten Sie die Floor-Funktion aus dem Mathematikmodul verwenden.
Als nächstes lernen Sie, wie man damit arbeitet defaultdict in Python. 👩🏽💻