2017-01-15 17 views
0

我想知道這裏發生了什麼。我正在瀏覽Learn Python the Hard Way這本書,並且它已經達到了要求我輸入複雜數學的程度:就像你在小學時可能遇到的速度 - 數學問題一樣。問題是當我從控制檯的文件中運行問題時,它會產生一個與如果直接在控制檯中輸入問題時會發現的問題不同的答案。Python代碼文件中的數學在控制檯中不一樣

我的例子是這樣的:

enter image description here

第一行是與來自文件是以下行的結果的問題。然後我在控制檯內複製完全相同的問題以獲得以下結果。

該網站暗示,人們會假設看到數字向下,而作者說,它是截斷數字,或"dropping the fractional part after the decimal"。我沒有看到這些事情發生。

誰能告訴我這裏發生了什麼?我目前已經安裝了Python 2.7。

+1

而這其中的原因很多,爲什麼你不應該使用LPTHW,其中主要的是捷思銳認爲Python 3中是一個未經測試的時尚。他錯了。安裝最新版本的Python 3,然後在python.org上使用[官方教程](https://docs.python.org/3/tutorial/)。之後,請查看[這裏](http://sopython.com/wiki/What_tutorial_should_I_read%3F)瞭解其他教程和教材。 Reddit的[r/python](https://www.reddit.com/r/python)和[r/learnpython](https://www.reddit.com/r/learnpython/wiki/index)組有很多教程和其他網站上的信息。 – MattDMo

+0

@MattDMo:Zed說你會這麼說......但我會看看。 –

回答

1

1/4中的兩個操作數都是整數。 Python不會自動將該操作的結果轉換爲浮點型。 PowerShell的確如此。因此Python減去0,而PowerShell減去0.25。

更改Python的語句是:

3 + 2 + 1 - 5 + 4 % 2 - 1.0/4 + 6       # returns 6.75 

,你會得到相同的結果在PowerShell中。

對於PowerShell來給像Python,你需要emulate an integer division相同的結果:

3 + 2 + 1 - 5 + 4 % 2 - [Math]::Floor([int]1/[int]4) + 6 # returns 7 
1

在第一個例子,你是在Python執行算術。第二,您正在使用Windows控制檯。他們使用不同的規則來評估這些表達式 - 特別是1/4部分(除非您告訴它,否則Python不使用浮點數,因此結果爲0)。

我得到相同的答案時,我比較Python腳本VS Python的控制檯:

# Python script. 
$ python -c 'print 3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6' 
7 

# The Python console. 
$ python 
Python 2.7.11 (default, Jul 30 2016, 18:49:54) 
>>> print 3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6 
7 
相關問題