2014-04-28 30 views
0

我正在做Python的初學者教程,這裏是我從一個論壇讀到的東西,並在我自己的編輯器中嘗試過。的代碼如下單斜槓沒有做float division

#!/usr/local/bin/python3 

def main(): 
    num = 42/9 
    print(type(num), num) 

if __name__ == "__main__" : main() 

然而,上述方案的,而不是給我的4.666666666666667一個默認的輸出是給我的只是4的整數輸出。我讀過在Python 3中使用默認單斜槓將得到我浮點輸出,但我不知道這裏有什麼問題(爲什麼我得到一個int輸出?)。

其他python3只有功能,如'sample {}'.format(n)字符串格式化工作正常,所以我不知道這是否與我的Python3安裝有關。我在Mac上,所以我也有Mac的默認2.7 Python版本。

+0

在'Python 2.x'中,表達式'42/9'是整數除法,並且會產生一個'int',它將截斷除法的小數部分。它只會在'Python 3.x'中將這些轉換爲'float'。 – CoryKramer

+0

嘗試'import sys',然後'print(sys.version)'來查看正在運行的內容。 –

+0

如果您使用雙斜槓如「42 // 9」,會發生什麼情況 – abhi

回答

6

這是可能的唯一方法是如果你在Python 2中,而不是Python 3.你引用的格式化功能也是在Python 2.7中實現的,所以很可能這就是你正在使用的。

要確定,有找出一個非常簡單的方法:

import sys 
print(sys.version_info) 

如果你堅持使用Python 2,你可以在你的腳本的頂部把這個以實現真正的師:

from __future__ import division 
+1

我使用Sublime Text(ver 3)作爲我的編輯器,不確定它是如何指向Python2.x版本的mac。 shebang不應該將解釋器路徑指向Python3嗎? '#!/ usr/local/bin/python3' – user1240679

+1

@ user1240679 Sublime不會讀取shebang來找出要運行的Python版本;它使用您的[構建系統](http://sublimetext.info/docs/en/reference/build_systems.html)指定的配置。您可以創建一個自定義構建系統來指向​​給定的Python安裝,或者修改當前構建系統,具體取決於您的偏好和設置。 –

+0

嗯,看起來有點偏離主題,但任何想法如何改變這種行爲的崇高文本爲品脫Python3?我記得從Package Control安裝一個Python3包。 – user1240679

0

默認解釋從python 2更改爲3.您可以在ideone上進行實例檢查。

import sys 
print(sys.version_info) 
def main(): 
    num = 42/9 
    print(type(num), num) 

if __name__ == "__main__" : main() 

python3.2.2結果:

sys.version_info(major=3, minor=2, micro=3, releaselevel='final', serial=0) 
<class 'float'> 4.666666666666667 

python2.7.3結果:

sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0) 
(<type 'int'>, 4) 

#!所使用的bash般的系統可能通過你的運行環境被忽略。