Il y a beaucoup plus à l'histoire ici que le type of the output. Dans Python 2.7, vous pouvez vous attendre à ce que /
tronque, et que //
étages, ce qui conduirait parfois à des réponses différentes même si la sortie est contrainte à un int dans les deux cas. Ce n'est simplement pas le cas.
Dans Python 2, où la sortie des deux opérateurs est intégrale, les résultats des deux sont les mêmes, quel que soit le signe de l'entrée.
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.8.2] on linux
> (6/4, 6//4)
=> (1, 1)
> (-6/4, -6//4)
=> (-2, -2)
> (6/-4, 6//-4) # Shouldn't really be different than the above
=> (-2, -2) # ... and, isn't.
En utilisant Python 3, vous pouvez voir qu'ils ne réalisent en effet des opérations différentes. Plus précisément, /
ne tourne pas du tout.
Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
> (6/4, 6//4)
=> (1.5, 1)
> (-6/4, -6//4)
=> (-1.5, -2)
> (6/-4, 6//-4)
=> (-1.5, -2)
Ces opérateurs ne semblent pas être bien documenté soit pour Python 2 ou Python 3, comme je l'ai mentionné dans mon précédent commentaire sur la question, de sorte que tout comportement pourrait être considéré comme « correct ».
Vous obtiendrez une erreur de syntaxe dans Python 3. – vaultah
Si votre arrière-plan est en C, alors vous devriez lire un tutoriel, non? –
C'était sur le tutoriel, et la sortie était différente – theBotelho