我在处理这些新的操作员遇到麻烦。输出显示它们是平等的,但我不明白为什么。在像C这样的语言中,这些不会产生相同的结果。/和/ /操作员功能相同
这是我的代码
x = 6
y = 4
t = 3
print " %f e %f" % (x//y, x/y)
的输出是这样的:
1.000000Ë1.000000
我在处理这些新的操作员遇到麻烦。输出显示它们是平等的,但我不明白为什么。在像C这样的语言中,这些不会产生相同的结果。/和/ /操作员功能相同
这是我的代码
x = 6
y = 4
t = 3
print " %f e %f" % (x//y, x/y)
的输出是这样的:
1.000000Ë1.000000
还有很多更在这里比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,正如我在前面就这个问题发表评论时提及,所以任何行为可以被认为是“正确的”。
在Python 2,两个整数的结果的整数,就像之间划分它在C中执行。如果您使用/
或//
,则无关紧要。
在Python 3中,使用/
的两个整数之间的分隔会产生一个浮点数,但//
会产生一个整数。
根据您的代码print
声明,你使用Python 2
你会在Python 3中得到一个语法错误。 – vaultah
如果你的背景是在C中,那么你应该阅读一个教程,不是? –
这是在教程中,输出是不同的 – theBotelho