我在處理這些新的操作員遇到麻煩。輸出顯示它們是平等的,但我不明白爲什麼。在像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