In diesem Tutorial lernen Sie, wie man in Python eine Division durch die Grundlinie durchführt. Sie verwenden den //-Operator von Python, die Floor-Funktion aus dem Mathematikmodul von Python und mehr - mit Codebeispielen.
Wir beginnen mit einem Überblick über die arithmetischen Operatoren in Python und lernen, wie der Operator // für die Division durch die Grundrechenarten funktioniert. Anschließend lernen wir, wie wir andere gleichwertige Methoden, einschließlich Funktionen aus den Modulen math und operator, zur Durchführung von Bodenteilungen verwenden können.
Fangen wir an...
Arithmetische Operatoren in Python
In Python können Sie arithmetische Operatoren verwenden, um einfache arithmetische Operationen mit Zahlen der Form int
und float
Datentypen. Diese Operatoren wirken auf Operanden (die Zahlen) und geben das Ergebnis der Operation zurück.

Die folgende Tabelle gibt einen Überblick über die arithmetischen Operatoren in Python und ihre Funktionsweise:
Betreiber | Syntax | Ergebnis |
Addition (+) | num1+num2 | Gibt die Summe von num1 und num2 |
Subtraktion (-) | num1-num2 | Gibt die Differenz zwischen num1 und num2 |
Multiplikation (*) | num1*num2 | Gibt das Produkt aus num1 und num2 |
Potenzierung (**) | num1**num2 | Gibt das Ergebnis von num1 erhoben zur Macht der num2 ; num1 num2 |
Abteilung (/) | num1/num2 | Gibt das Ergebnis zurück, wenn num1 wird geteilt durch num2 - einschließlich des gebrochenen Teils |
Bodeneinteilung (/) | num1//num2 | Gibt den Quotienten zurück, wenn num1 wird geteilt durch num2 |
Modulo (%) | num1 % num2 | Gibt den Restbetrag 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 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
18 Jahre alt ist und num2
ist 5. Die Divisionsoperation num1/num2
gibt das Ergebnis einschließlich der Nachkommastelle zurück.
Die Zahl 5 geht dreimal in 18 ein, wobei ein Rest von drei übrig bleibt. Daher die Operation der Bodenteilung, 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 geben, wie die Operatoren Division, Division durch die Untergrenze und Modulo funktionieren. Als Nächstes werden wir den Operator für die Bodenteilung im Detail kennenlernen.
⚠️ In Python 2 schneidet die Divisionsoperation (/) das Ergebnis auf die nächstgelegene Ganzzahl ab - ähnlich wie die Bodenteilungsoperation in Python 3. In diesem Tutorium wird die Funktionsweise der Bodenteilung in Python 3.x erläutert.
Bodenteilung mit dem Operator //

Betrachten Sie eine Divisionsoperation mit einem Dividenden und einem Divisor. In num1/num2
, num1
ist die Dividende und num2
ist der Divisor. Um die Bodenteilung von num1
und num2
verwenden num1//num2
.
Die Mitarbeiter der Bodenabteilung (//) gibt den Quotienten der Divisionsoperation zurück - als Ganzzahl oder als Fließkommazahl, je nach den Datentypen der Operanden.
Der Operator für die Bodenteilung gewährleistet nicht, dass die Antwort immer eine ganze Zahl ist. Wenn entweder die Dividende (num1
) oder der Divisor (num2
) ein Float ist, dann ist das Ergebnis von num1//num2
ist ein Float. 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 in eine Ganzzahl umwandeln, indem Sie int()
Funktion:
>>> int(18.0//5)
3
>>> int(10.0//4)
2
>>> int(15//4.0)
3
Was passiert unter der Motorhaube?
Wenn Sie den Divisionsoperator // verwenden, wird die besondere Methode (auch Dunder-Methode genannt) __floordiv__()
aufgerufen wird. Daher können Sie auch die __floordiv__()
Methode auf eine beliebige Ganzzahl oder Fließkommazahl anwenden, wie unten gezeigt:
num1 = 18
num2 = 5
num1.__floordiv__(num2)
# Output: 3
Bodenteilung mit operator.floordiv()

💡 Um eine Bodenteilung in Python durchzuführen, können Sie auch die floordiv()
Funktion in der operator
Modul.
Pythons Bedienmodul enthält die Definitionen von effizienten Funktionen, die alle arithmetischen Operationen durchführen können. Um eine Bodenteilung durchzuführen, können Sie daher auch die Funktion floordiv()
Funktion aus dem Operator-Modul - anstelle des // Operators.
Die Verwendung des floordiv()
Funktion des Operator-Moduls ist gleichbedeutend mit der Verwendung des Operators für die Bodenteilung.
>>> import operator
>>> operator.floordiv(18,5)
# Output: 3
>>> operator.floordiv(12,5.0)
# Output: 2.0
Bodenteilung mit math.floor()
Wie funktioniert die Bodenfunktion?
In der Mathematik ist die
floor()
Funktion nimmt eine beliebige reelle Zahl aufx
als Eingabe und gibt eine Ganzzahl (Ergebnis) zurück. Dieses Ergebnis ist die größte Ganzzahl das ist kleiner als oder gleich die reelle Zahl x.
Um dies besser zu verstehen, wollen wir uns einige Beispiele ansehen und diese Zahlen auf einer Zahlenreihe visualisieren.
Beispiel 1: Nehmen wir die Zahl 2,3. Die größte ganze Zahl, die kleiner oder gleich 2,3 ist, ist 2; floor(2,3) liefert also 2.

Beispiel 2: Dieselbe Definition können Sie auch bei negativen Zahlen anwenden. Betrachten Sie die Zahl -1,7. Die größte ganze Zahl, die kleiner oder gleich -1,7 ist, ist -2; floor(-1,7) liefert also -2.

Überprüfen wir die obigen Ergebnisse mit der Methode floor()
Funktion aus dem Mathematikmodul.
>>> from math import floor
>>> floor(2.3)
2
>>> floor(-1.7)
-2
Um eine Etagenaufteilung durchzuführen, können Sie die Funktion floor()
Funktion mit num1/num2
als Argument. Da sie das Ergebnis auf die nächste Ganzzahl abschneidet oder abrundet, ist sie äquivalent zu der Operation der Bodenteilung.
Sie können explizit die floor()
Funktion aus der math
Modul, wie gezeigt:
from math import floor
num1 = 18
num2 = 5
floor(num1/num2)
# Output: 3
Alternativ dazu können Sie auch nur die math
Modul und greifen Sie dann auf das floor()
Funktion mit math.floor()
.
import math
num1 = 18
num2 = 5
math.floor(num1/num2)
# Output: 3
Anders als die floordiv()
Funktion aus dem Operator-Modul und dem Operator für die Bodenteilung //, unter Verwendung math.floor(num1/num2)
stellt sicher, dass das Ergebnis eine ganze Zahl ist. Diese Methode macht den Code lesbar und macht den Schritt der Typisierung überflüssig.
import math
num1 = 18.0
num2 = 5
math.floor(num1/num2)
# Output: 3
Beispiele für Bodenteilung 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 in sortierten Arrays nach einem Zielelement suchen können O(log n) Zeit, wobei n ist die Größe des Arrays.
Bei diesem Algorithmus wird das Suchintervall bei jedem Schritt in zwei Hälften geteilt. Dies geschieht in Abhängigkeit davon, ob der Mittelpunkt des Intervalls mit dem Ziel übereinstimmt (die 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
.
- Wenn die
item
gefunden wird, gibt die Funktion den Index zurück, bei demitem
auftritt. - Andernfalls gibt es
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 funktionell korrekt, außer dass wir die midPt
nicht zu einer ganzen Zahl ausgewertet wird, wenn die Suche fortgesetzt wird.
binary_search(item,itemlist)
Wenn wir die Funktion aufrufen, stoßen wir auf ein TypeError
die besagt, dass die Listenindizes Ganzzahlen oder Slices und keine Floats sein müssen.
---------------------------------------------------------------------------
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 ändern die Funktionsdefinition, um den Operator für die Division durch die Untergrenze 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, bei dem die Position 7 gefunden wird, also Index 1.
binary_search(item,itemlist)
# Output: 1
Schlussfolgerung
Ich hoffe, dieses Tutorial hat Ihnen geholfen zu verstehen, wie man in Python eine Bodenteilung durchführt. Hier ist eine Zusammenfassung der verschiedenen Methoden, die Sie gelernt haben:
- In Python, a Betreiber b führt die durch den Operator definierte Operation mit a und b als Operanden durch und gibt das Ergebnis der Operation zurück.
- Sie können Pythons Divisionsoperator // verwenden; a//b gibt den Quotienten der Divisionsoperation a/b zurück.
- Alternativ können Sie auch das Äquivalent floordiv() Funktion, die in Pythons Operator-Modul mit der 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 ein Float oder ein Int sein, je nach den Werten von a und b. Sie müssen also den Rückgabewert in eine Ganzzahl umwandeln.
- Die floor() Funktion aus dem Mathematikmodul von Python kann auch zur Durchführung von Bodenteilungen verwendet werden: math.floor(a,b) ist gleichbedeutend mit a//b und gibt eine ganze Zahl zurück. Wenn das Ergebnis eine ganze Zahl sein soll, sollten Sie die Funktion floor aus dem Modul math verwenden.
Als nächstes lernen Sie, wie Sie mit standarddict in Python. 👩🏽💻