Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 13, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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.

Arithmetik-Operatoren in Python

Die folgende Tabelle gibt einen Überblick über die arithmetischen Operatoren in Python und ihre Funktionsweise:

Betreiber Syntax Ergebnis
Addition (+)num1+num2Gibt die Summe von num1 und num2
Subtraktion (-)num1-num2Gibt die Differenz zwischen num1 und num2
Multiplikation (*)num1*num2Gibt das Produkt aus num1 und num2
Potenzierung (**)num1**num2Gibt das Ergebnis von num1 erhoben zur Macht der num2; num1num2
Abteilung (/)num1/num2Gibt das Ergebnis zurück, wenn num1 wird geteilt durch num2 - einschließlich des gebrochenen Teils
Bodeneinteilung (/)num1//num2Gibt den Quotienten zurück, wenn num1 wird geteilt durch num2
Modulo (%)num1 % num2Gibt 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//num2ergibt 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 //

Floor-Division-Using-the-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 num2verwenden 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()

Stockwerk-Teilung-Bedienung.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 auf x 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.

python-floordivision-lehrgang-ex1

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.

python-floordivision-lehrgang-ex2

Ü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

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

  • Bala Priya C
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder