Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

So führen Sie eine Bodenteilung in Python durch

How-to-perform-Floor-Division-in-Python
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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.

Arithmetische Operatoren in Python

Die folgende Tabelle fasst die arithmetischen Operatoren in Python und ihre Funktionsweise zusammen:

Operator Syntax Ergebnis
Zusatz (+)num1+num2Gibt die Summe von zurück num1 und num2
Subtraktion (-)num1-num2Gibt die Differenz zwischen zurück num1 und num2
Multiplikation (*)num1*num2Gibt das Produkt von zurück num1 und num2
Potenzierung (**)num1**num2Gibt das Ergebnis von zurück num1 zur Macht erhoben num2; num1num2
Aufteilung (/)num1/num2Gibt das Ergebnis zurück, wenn num1 wird geteilt durch num2 – einschließlich des Bruchteils
Etagenaufteilung (/)num1//num2Gibt den Quotienten wann zurück num1 wird geteilt durch num2
Modulo (%)num1 % num2Gibt 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

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

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 an x 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.

python-floordivision-tutorial-ex1

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.

python-floordivision-tutorial-ex2

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

Beispiele-für-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 dem item 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. 👩🏽‍💻

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder