2017-08-10 73 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