Atenti con el operador / en Python ahora xD

Iniciado por EzianGES, 27 Febrero 2014, 17:44 PM

0 Miembros y 1 Visitante están viendo este tema.

EzianGES

Hasta donde yo recordaba, si hacía algo así:
Código (Python) [Seleccionar]

>>>3 / 2
1
>>>3 // 2
1
>>>3.0 / 2
1.5
>>>3 / 2.0
1.5


Python me devolvía un número entero si usaba / entre dos números enteros, y un número entero con // sin importar que fuesen float...

Formateo la PC, me bajo Python3.3.4 y me topo con lo siguiente (además de una web mejorada con una shell interactiva que se luce http://python.org/):
Código (Pyton) [Seleccionar]

>>> 3 / 2
1.5


¿Desde cuándo una división entre dos números enteros me devuelve float si o si? xD O siempre fue así y yo por algún motivo no me di cuenta? xD Busqué en la documentación sobre el último release y no dice nada al respecto D:



adastra

 Pues si... es la "magia" de Python 3.
En versiones 2.x te devolvía un entero, en las nuevas versiones ahora te devuelve un flotante siempre ya que se hace una "floor division".
Si quieres remover la parte flotante del resultado, tienes que ejecutar la división con "//".


http://docs.python.org/3/tutorial/introduction.html
http://docs.python.org/3/glossary.html#term-floor-division





EzianGES

Cita de: adastra en 27 Febrero 2014, 17:50 PM
Pues si... es la "magia" de Python 3.
En versiones 2.x te devolvía un entero, en las nuevas versiones ahora te devuelve un flotante siempre ya que se hace una "floor division".
Si quieres remover la parte flotante del resultado, tienes que ejecutar la división con "//".


http://docs.python.org/3/tutorial/introduction.html
http://docs.python.org/3/glossary.html#term-floor-division






Si, lo de quitar los decimales y demás lo capté jaja pero me sorprendió y pensé que algún distraído tampoco lo habría notado jaja