Skip to content

Python Ganzzahldivision: Vollständiger Leitfaden zum // Operator

Kanaries Team
Name
Kanaries Team

Updated on

Die Ganzzahldivision (Floor Division) ist eine grundlegende arithmetische Operation in Python, die zwei Zahlen dividiert und das Ergebnis auf die nächste ganze Zahl abrundet. Im Gegensatz zur regulären Division, die eine Gleitkommazahl zurückgibt, gibt die Ganzzahldivision mit dem // Operator immer die größte ganze Zahl zurück, die kleiner oder gleich dem Ergebnis ist. Dieser Artikel führt Sie durch alles, was Sie über die Python Ganzzahldivision wissen müssen.

Python bietet zwei Divisionsoperatoren: den regulären Divisionsoperator / und den Ganzzahldivisionsoperator //. Das Verständnis, wann welcher zu verwenden ist, ist essentiell für das Schreiben von effizientem und fehlerfreiem Python-Code.

Möchten Sie schnell Datenvisualisierungen aus Python Pandas DataFrames ohne Code erstellen?

PyGWalker ist eine Python-Bibliothek für explorative Datenanalyse mit Visualisierung. PyGWalker (opens in a new tab) kann Ihren Jupyter Notebook Datenanalyse- und Visualisierungs-Workflow vereinfachen, indem es Ihr Pandas DataFrame (und Polars DataFrame) in eine Tableau-ähnliche Benutzeroberfläche für visuelle Exploration verwandelt.

PyGWalker für Datenvisualisierung (opens in a new tab)

Was ist Ganzzahldivision in Python?

Die Ganzzahldivision ist die Divisionsoperation, die das Ergebnis auf die nächste ganze Zahl abrundet. In Python wird dies mit dem // Operator durchgeführt. Der Begriff "Floor" (Boden) stammt von der mathematischen Floor-Funktion, die immer in Richtung negative Unendlichkeit rundet.

Hier ist ein einfaches Beispiel:

# Reguläre Division
print(7 / 2)   # Ausgabe: 3.5
 
# Ganzzahldivision
print(7 // 2)  # Ausgabe: 3

Wie Sie sehen können, gibt die reguläre Division 3.5 zurück, während die Ganzzahldivision 3 zurückgibt - die größte ganze Zahl, die kleiner oder gleich 3.5 ist.

Syntax der Ganzzahldivision

Die Syntax für die Ganzzahldivision in Python ist unkompliziert:

ergebnis = dividend // divisor

Wobei:

  • dividend die zu dividierende Zahl ist
  • divisor die Zahl ist, durch die dividiert wird
  • ergebnis der Floor der Division ist

Ganzzahldivision mit verschiedenen Datentypen

Ganzzahlen (Integers)

Wenn beide Operanden Ganzzahlen sind, gibt die Ganzzahldivision eine Ganzzahl zurück:

print(10 // 3)   # Ausgabe: 3
print(15 // 4)   # Ausgabe: 3
print(20 // 5)   # Ausgabe: 4

Gleitkommazahlen (Floats)

Wenn mindestens ein Operand ein Float ist, gibt die Ganzzahldivision einen Float zurück (aber immer noch abgerundet):

print(10.0 // 3)   # Ausgabe: 3.0
print(10 // 3.0)   # Ausgabe: 3.0
print(10.5 // 3)   # Ausgabe: 3.0

Negative Zahlen

Die Ganzzahldivision mit negativen Zahlen kann knifflig sein. Denken Sie daran, dass die Ganzzahldivision immer in Richtung negative Unendlichkeit rundet, nicht in Richtung Null:

print(7 // 2)    # Ausgabe: 3
print(-7 // 2)   # Ausgabe: -4  (nicht -3!)
print(7 // -2)   # Ausgabe: -4
print(-7 // -2)  # Ausgabe: 3

Dieses Verhalten ist wichtig zu verstehen, weil -7 / 2 = -3.5, und der Floor von -3.5 ist -4, nicht -3.

Ganzzahldivision vs. Reguläre Division

OperationOperatorErgebnistypBeispielAusgabe
Reguläre Division/Immer Float7 / 23.5
Ganzzahldivision//int oder float7 // 23
# Vergleich
a = 17
b = 5
 
print(f"Reguläre Division: {a} / {b} = {a / b}")     # 3.4
print(f"Ganzzahldivision: {a} // {b} = {a // b}")    # 3

Praktische Anwendungsfälle für Ganzzahldivision

1. Berechnung von Seiten oder Gruppen

Wenn Sie bestimmen müssen, wie viele vollständige Gruppen in eine Gesamtmenge passen:

gesamt_elemente = 23
elemente_pro_seite = 5
 
vollstaendige_seiten = gesamt_elemente // elemente_pro_seite
print(f"Vollständige Seiten: {vollstaendige_seiten}")  # Ausgabe: 4

2. Einheitenumrechnung

Ganzzahldivision ist nützlich für Einheitenumrechnungen:

gesamt_sekunden = 3725
 
stunden = gesamt_sekunden // 3600
minuten = (gesamt_sekunden % 3600) // 60
sekunden = gesamt_sekunden % 60
 
print(f"{stunden}h {minuten}m {sekunden}s")  # Ausgabe: 1h 2m 5s

3. Array-Indizierung und Positionierung

Bei der Arbeit mit Rastern oder 2D-Arrays:

# 1D-Index in 2D-Koordinaten umwandeln
index = 17
spalten = 5
 
zeile = index // spalten
spalte = index % spalten
 
print(f"Index {index} -> Zeile: {zeile}, Spalte: {spalte}")  # Zeile: 3, Spalte: 2

4. Mittleren Index finden

Nützlich bei binärer Suche und ähnlichen Algorithmen:

def binaere_suche(arr, ziel):
    links, rechts = 0, len(arr) - 1
 
    while links <= rechts:
        mitte = (links + rechts) // 2  # Ganzzahldivision für mittleren Index
        if arr[mitte] == ziel:
            return mitte
        elif arr[mitte] < ziel:
            links = mitte + 1
        else:
            rechts = mitte - 1
 
    return -1

Die divmod() Funktion

Python bietet eine eingebaute Funktion divmod(), die sowohl den Quotienten (Ganzzahldivision) als auch den Rest in einer einzigen Operation zurückgibt:

quotient, rest = divmod(17, 5)
print(f"17 // 5 = {quotient}")    # Ausgabe: 3
print(f"17 % 5 = {rest}")          # Ausgabe: 2

Dies ist effizienter als // und % separat aufzurufen, wenn Sie beide Werte benötigen.

Ganzzahldivision mit dem math-Modul

Sie können die Ganzzahldivision auch mit der Funktion math.floor() in Kombination mit regulärer Division erreichen:

import math
 
ergebnis1 = 7 // 2
ergebnis2 = math.floor(7 / 2)
 
print(ergebnis1)  # Ausgabe: 3
print(ergebnis2)  # Ausgabe: 3

Beide Methoden liefern das gleiche Ergebnis, aber // ist prägnanter und wird generell bevorzugt.

Häufige Fehler und wie man sie vermeidet

Fehler 1: Verwechslung von Ganzzahldivision mit Trunkierung

# Ganzzahldivision rundet in Richtung negative Unendlichkeit
print(-7 // 2)  # Ausgabe: -4
 
# Trunkierung (int-Konvertierung) rundet in Richtung Null
print(int(-7 / 2))  # Ausgabe: -3

Fehler 2: Float-Ergebnisse vergessen

# Wenn ein Operand float ist, ist das Ergebnis float
print(type(10 // 3))    # <class 'int'>
print(type(10.0 // 3))  # <class 'float'>

Fehler 3: Division durch Null

# Dies wird einen ZeroDivisionError auslösen
try:
    ergebnis = 10 // 0
except ZeroDivisionError:
    print("Kann nicht durch Null dividieren!")

Leistungsüberlegungen

Die Ganzzahldivision ist im Allgemeinen schneller als reguläre Division gefolgt von int() oder math.floor():

import timeit
 
# Ganzzahldivisionsoperator
zeit1 = timeit.timeit('7 // 2', number=1000000)
 
# Reguläre Division + int()
zeit2 = timeit.timeit('int(7 / 2)', number=1000000)
 
print(f"// Operator: {zeit1:.4f}s")
print(f"int(/) Methode: {zeit2:.4f}s")

FAQ

Was ist der Unterschied zwischen / und // in Python?

Der / Operator führt echte Division durch und gibt immer einen Float zurück, während // Ganzzahldivision durchführt und die größte ganze Zahl zurückgibt, die kleiner oder gleich dem Ergebnis ist. Zum Beispiel gibt 7 / 2 3.5 zurück, aber 7 // 2 gibt 3 zurück.

Wie funktioniert Ganzzahldivision mit negativen Zahlen?

Die Ganzzahldivision rundet immer in Richtung negative Unendlichkeit. Also ist -7 // 2 gleich -4, nicht -3, weil -4 die größte ganze Zahl ist, die kleiner oder gleich -3.5 ist.

Wann sollte ich Ganzzahldivision anstelle von regulärer Division verwenden?

Verwenden Sie Ganzzahldivision, wenn Sie ein ganzzahliges Ergebnis benötigen und Gleitkomma-Präzisionsprobleme vermeiden möchten, wie beim Berechnen von Array-Indizes, Zählen von vollständigen Gruppen oder Implementieren von Algorithmen, die ganzzahlige Arithmetik erfordern.

Fazit

Die Python Ganzzahldivision mit dem // Operator ist ein leistungsstarkes Werkzeug zur Durchführung von ganzzahliger Division, die auf die nächste ganze Zahl abrundet. Das Verständnis ihres Verhaltens, insbesondere mit negativen Zahlen und Gleitkomma-Operanden, ist entscheidend für das Schreiben von korrektem Python-Code. Ob Sie Algorithmen implementieren, Einheiten umrechnen oder mit Array-Indizes arbeiten - die Ganzzahldivision ist eine wesentliche Operation in Ihrem Python-Toolkit.