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
¿Es esto intencionado? Recuerdo fuertemente que las versiones anteriores volvían int/int=int
? ¿Qué debo hacer? ¿Hay un nuevo operador de división o siempre debo emitir?
python
integer
python-3.x
division
Jonas Byström
fuente
fuente
Respuestas:
Eche un vistazo a PEP-238 : Cambio del operador de división
fuente
/
ser suficiente de un "error" de diseño de lenguaje que necesitaba ser reparado en Python 3. Puede haber sido una decisión controvertida, pero suficiente gente sintió que era la correcta. Cuenta conmigo en el grupo que ama el cambio. Es bueno que todos podamos estar de acuerdo en no estar de acuerdo. Salud. :)Vaya, encontrado de inmediato
2//2
.fuente
Espero que pueda ayudar a alguien al instante.
Comportamiento del operador de división en Python 2.7 y Python 3
para obtener el resultado en doble múltiplo 1.0 a "dividendo o divisor"
fuente
La respuesta aceptada ya menciona PEP 238 . Solo quiero agregar un vistazo rápido detrás de escena para aquellos interesados en lo que está sucediendo sin leer todo el PEP.
Python mapas de operadores como
+
,-
,*
y/
para funciones especiales, como por ejemplo, quea + b
es equivalente aCon respecto a la división en Python 2, solo hay de forma predeterminada
/
qué mapas__div__
y el resultado depende de los tipos de entrada (por ejemploint
,float
).Python 2.2 introdujo la
__future__
característicadivision
, que cambió la semántica de división de la siguiente manera (TL; DR de PEP 238):/
mapas a los__truediv__
que debe "devolver una aproximación razonable del resultado matemático de la división" (cita de PEP 238)//
asigna a__floordiv__
, que debería devolver el resultado de/
Con Python 3.0, los cambios de PEP 238 se convirtieron en el comportamiento predeterminado y no hay un método más especial
__div__
en el modelo de objetos de Python.Si desea usar el mismo código en Python 2 y Python 3, use
y se adhieren a la semántica PEP 238 de
/
y//
.fuente
Según la documentación de Python3, python cuando se divide por entero, generará flotante a pesar de que se espera que sea entero.
Para imprimir exclusivamente enteros, use
floor division method
. La división del piso está redondeando a cero y eliminando el punto decimal.Represented by //
Por lo tanto, en lugar de 2/2, use
2//2
También puede importar la división
__future__
independientemente del uso de python2 o python3.¡Espero eso ayude!
fuente