2017-08-10 36 views
-1

我在处理这些新的操作员遇到麻烦。输出显示它们是平等的,但我不明白为什么。在像C这样的语言中,这些不会产生相同的结果。/和/ /操作员功能相同

这是我的代码

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

的输出是这样的:

1.000000Ë1.000000

+2

你会在Python 3中得到一个语法错误。 – vaultah

+1

如果你的背景是在C中,那么你应该阅读一个教程,不是? –

+0

这是在教程中,输出是不同的 – theBotelho

回答

1

还有很多更在这里比type of the output的故事。在Python 2.7中,您可能会期望/截断以及//楼层,即使在这两种情况下输出被强制为int,有时也会导致不同的答案。这根本不是那么回事。

Python 2中,两个运算符的输出都是整数,两者的结果是相同的,而不管输入的符号如何。

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. 

使用Python 3,你可以看到,他们确实执行不同的操作。具体而言,/根本不轮。

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) 

这些运营商似乎并没有做到有据可查的任何Python的2或Python 3,正如我在前面就这个问题发表评论时提及,所以任何行为可以被认为是“正确的”。

1

在Python 2,两个整数的结果的整数,就像之间划分它在C中执行。如果您使用///,则无关紧要。

在Python 3中,使用/的两个整数之间的分隔会产生一个浮点数,但//会产生一个整数。

根据您的代码print声明,你使用Python 2