2017-08-10 1 views
-1

J'ai des problèmes avec ces nouveaux opérateurs. La sortie montre qu'ils sont égaux, mais je ne comprends pas pourquoi. Dans des langages comme C, ceux-ci ne créeraient pas le même résultat./et // l'opérateur fonctionne le même

Voici mon code

x = 6 
y = 4 
t = 3 
print " %f e %f" % (x//y, x/y) 

La sortie est la suivante:

1,000000 e 1,000000

+2

Vous obtiendrez une erreur de syntaxe dans Python 3. – vaultah

+1

Si votre arrière-plan est en C, alors vous devriez lire un tutoriel, non? –

+0

C'était sur le tutoriel, et la sortie était différente – theBotelho

Répondre

1

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 ».

1

En Python 2, division entre deux entiers se traduit par un nombre entier, tout comme il le fait en C. Peu importe si vous utilisez / ou //.

En Python 3, la division entre deux entiers avec / donne un nombre à virgule flottante, mais avec // résulte un nombre entier.

Sur la base de la déclaration print dans votre code, vous utilisez Python 2.