Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0
Ist das beabsichtigt? Ich erinnere mich stark an frühere Versionen, die zurückgekehrt sind int/int=int
? Was soll ich tun, gibt es einen neuen Divisionsoperator oder muss ich immer gießen?
python
integer
python-3.x
division
Jonas Byström
quelle
quelle
Antworten:
Schauen Sie sich PEP-238 an : Ändern des Divisionsoperators
quelle
/
, genug von einem Sprachdesign- "Fehler" zu sein, der in Python 3 behoben werden musste. Es mag eine kontroverse Entscheidung gewesen sein, aber genug Leute hielten es für die richtige. Zählen Sie mich zu der Gruppe, die die Veränderung liebt. Es ist schön, dass wir uns alle darauf einigen können, nicht zuzustimmen. Prost. :)Ups, sofort gefunden
2//2
.quelle
Hoffe, es könnte sofort jemandem helfen.
Verhalten des Divisionsoperators in Python 2.7 und Python 3
um das Ergebnis in einem doppelten Vielfachen von 1,0 zu "Dividende oder Divisor" zu erhalten
quelle
In der akzeptierten Antwort wird bereits PEP 238 erwähnt . Ich möchte nur einen kurzen Blick hinter die Kulissen für diejenigen werfen, die daran interessiert sind, was los ist, ohne den gesamten PEP zu lesen.
Python Karten Operatoren wie
+
,-
,*
und/
auf spezielle Funktionen, so dass zBa + b
entsprichtIn Bezug auf die Unterteilung in Python 2 gibt es standardmäßig nur
/
die Zuordnung__div__
und das Ergebnis hängt von den Eingabetypen ab (zint
.float
).In Python 2.2 wurde die
__future__
Funktion eingeführtdivision
, mit der die Divisionssemantik folgendermaßen geändert wurde (TL; DR von PEP 238):/
Karten, zu__truediv__
denen "eine vernünftige Annäherung an das mathematische Ergebnis der Division zurückgegeben werden muss" (Zitat aus PEP 238)//
Karten zu__floordiv__
, die das Bodenergebnis von zurückgeben sollten/
Mit Python 3.0 wurden die Änderungen von PEP 238 zum Standardverhalten, und
__div__
das Objektmodell von Python enthält keine spezielle Methode mehr .Wenn Sie denselben Code in Python 2 und Python 3 verwenden möchten, verwenden Sie
und halten Sie sich an die PEP 238-Semantik von
/
und//
.quelle
Laut der Python3-Dokumentation generiert Python, wenn es durch eine Ganzzahl geteilt wird, Float, obwohl erwartet wird, dass es eine Ganzzahl ist.
Verwenden Sie zum ausschließlichen Drucken von Ganzzahlen
floor division method
. Die Bodenteilung rundet Null ab und entfernt den Dezimalpunkt.Represented by //
Verwenden Sie daher anstelle von 2/2
2//2
Sie können auch eine Division aus importieren
__future__
unabhängig von der Verwendung von Python2 oder Python3 importieren.Ich hoffe es hilft!
quelle